leetcode - 461 \ 338
338
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
class Solution { public int[] countBits(int n) { int[] res = new int[n + 1]; for(int i = 0; i <= n ; i++){ // 去掉最右边的一位,如果去掉的一位是0则加上0,如果为1则加上1 // 因为 i & 1 是根据最后一位计算的 res[i] = res[i >> 1] + (i & 1); //注意i&1需要加括号 } return res; } }
461
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
class Solution { public int hammingDistance(int x, int y) { int z = x ^ y; int sum = 0; while (z != 0) { sum += z & 1; z = z >> 1; } return sum; } }

浙公网安备 33010602011771号