一、题目描述

二、代码实现
解法一:右移
时间复杂度:T(n)=O(n)
空间复杂度:S(n)=O(1)
cpp
class Solution {
public:
int hammingWeight(int n) {
int count=0;
for(int i=31;i>=0;i--){
if(((n>>i)&1)==1)
count++;
}
return count;
}
};
解法二:消1
时间复杂度:T(n)=O(n)
空间复杂度:S(n)=O(1)
cpp
class Solution {
public:
int hammingWeight(int n) {
int count=0;
while(n){
count++;
n=n&(n-1);//消除最右边的1
}
return count;
}
};