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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步