191. 位1的个数
2021年3月22日每日一题
0ms代码,o(*≧▽≦)ツ笑
\(-n\&n\),其作用是返回\(n\)二进制最低位的\(1\)所对应的\(2\)的幂
学会这个可以去学一下树状数组了
原理是:
原码在最低位\(1\)之前都是\(0\),取反码则是最低位\(0\)之前都是\(1\)
补码=反码\(+1\),反码因为进位,最低位的1位置必然和原码相同。
class Solution {
public:
int hammingWeight(uint32_t n) {
int ans=0;
while(n){
n-=-n&n;
ans++;
}
return ans;
}
};
标签:反码,个数,最低,191,ans,原码
From: https://www.cnblogs.com/CrossAutomaton/p/17867525.html