LeetCode 0191 Number of 1 Bits
作者:互联网
1. 题目描述
2. Solution 1
1、思路分析
方法一: 逐位遍历,统计比特位为1的个数。
2、代码实现
package Q0199.Q0191Numberof1Bits;
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
if (n == 0) return 0;
int cnt = 0;
for (int i = 0; i < 32; i++) {
cnt += n & 1;
n >>= 1;
}
return cnt;
}
}
3、复杂度分析
时间复杂度: O(1)
空间复杂度: O(1)
3. Solution 2
1、思路分析
n & (n - 1) 把最低位的1变成0。如: n=5,二进制为 0101,n-1=4,二进制为0100,0101 & 0100 = 0100。逐个把最低位的1变成0,至到把n变成0,过程中计数。
2、代码实现
package Q0199.Q0191Numberof1Bits;
public class Solution2 {
public int hammingWeight(int n) {
int cnt = 0;
while (n != 0) {
n = n & (n - 1);
cnt++;
}
return cnt;
}
}
3、复杂度分析
时间复杂度: O(1)
空间复杂度: O(1)
标签:cnt,return,int,复杂度,Solution,public,0191,Bits,LeetCode 来源: https://www.cnblogs.com/junstat/p/16329087.html