特别记忆 , 大佬算法,
class Solution {
public:
int NumberOf1(int n) {
int count = 0 ;
while(n != 0)
{
count ++ ;
n = n &(n-1);
}
return count;
}
};
解题思路 :
在二进制数中 , 凡是非零数 ,必然有一个1 , 每次循环里面都化去最后一个1.
常规思路:
class Solution {
public:
int NumberOf1(int n) {
int count = 0 ;
unsigned int flag = 1;
while(flag)
{
if(flag & n)
{
count ++ ;
}
flag = flag << 1;
}
return count;
}
};