P49 二进制中 1 的个数
算法 16 阅读
信号摘要
难度:Easy · 时长:04:21 · leetcode 191 · lintcode 1332
未对外公开播放权限
点击查看说明
描述
这个题目说的是,给你一个整数,你要计算它的二进制表示中 1 的个数,然后返回。
比如说,给你的整数是 12,它的二进制表示是:1100
包含两个 1,因此你要返回 2。
代码
public class AlgoCasts {
// Time: O(m), Space: O(1)
public int numberOfOneWithMask(int n) {
int mask = 1, count = 0;
while (mask != 0) {
if ((n & mask) != 0) ++count;
mask <<= 1;
}
return count;
}
// Time: O(k), Space: O(1)
public int numberOfOne(int n) {
int count = 0;
while (n != 0) {
++count;
n &= (n - 1);
}
return count;
}
}