Problem: 191. 位1的个数
文章目录
- 题目描述
- 思路
- 复杂度
- Code
题目描述
思路
题目规定数值的范围不会超过32位整形数
1.定义统计个数的变量oneCount;由于每次与给定数字求与的变量mask初始化为1
2.for循环从0~32,每一次拿mask与给定数字求与运算,若不为0则表示当前二进制位为1,oneCount++;
3.给定数字右移一位
复杂度
时间复杂度:
O ( 1 ) O(1) O(1)
空间复杂度:
O ( 1 ) O(1) O(1)
Code
class Solution {
/**
* Bit operation
*
* @param n Unsigned integer to be operated
* @return int
*/
public int hammingWeight(int n) {
int oneCount = 0;
int mask = 1;
for (int i = 0; i < 32; ++i) {
if ((n & mask) != 0) {
oneCount++;
}
mask <<= 1;
}
return oneCount;
}
}