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;
    }
}

 

posted @   牵魂  阅读(11)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示