思想:
方法1:循环右移 + 二进制末位数字 & 0x1(判断末位是否为1)
方法2:类似于方法1
时间复杂度: O(n) 运行时间与 n 中位为 1 的有关。最坏情况下, n 中所有位都是 1 。对于 32 位整数,运行时间是 O(1) 的。
空间复杂度: O(1)
int hammingWeight(uint32_t n) {
// 方法1:循环右移 + 二进制末位数字 & 0x1(判断末位是否为1)
// int cnt = 0;
// while (n != 0)
// {
// if (n & 0x1 == 1)
// cnt++;
// n = n >> 1;
// }
// return cnt;
// 方法2;类似方法1
int cnt = 0;
while (n != 0)
{
cnt++;
n = n & (n - 1);
}
return cnt;
}