题解 | #二进制中1的个数#
二进制中1的个数
http://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8
负数补码不能用辗转相除。按位减一相与,一次可以消掉右侧的一个1
class Solution {
public:
int NumberOf1(int n) {
int ans=0;
while(n!=0){
ans++;
n=n&(n-1);
}
return ans;
}
};
查看3道真题和解析