leetcode 191 位1的个数
一、题目描述
二、代码实现
解法一:右移
时间复杂度:T(n)=O(n)
空间复杂度:S(n)=O(1)
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)
class Solution {
public:int hammingWeight(int n) {int count=0;while(n){count++;n=n&(n-1);//消除最右边的1}return count;}
};