文章目录
- 题目描述
- 思路 & 代码
- 二刷
题目描述
- 涉及二进制,位运算跑不了~
思路 & 代码
- 既然是32位,那么通过一次遍历,每次判断一个位是否为1即可
public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int ans = 0;// 遍历各个位,进行“截取”操作for(int i = 0; i < 32; i++){// “截取”到了,说明这里有1if(((1 << i) & n) != 0){ans++;}}return ans;}
}
二刷
- 耗时稍微快了一点呢!
public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int counts = 0;for(int i = 0; i < 32; i++, n >>= 1) {if((n & 1) == 1) {counts++;}}return counts;}
}