Leetcode(191)之位1的个数
2020-01-04 18:11
1391 查看
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
题目描述:
解题思路:
如果将n和n-1进行与运算,如果n的最后一位是1,那么n-1的最后一位必是0,且前面的位数都与n相同,那么一次与运算会减少一个1;如果n的最后一位是0,那我们找到n最后一个为1的位数,n-1在这位会是0,而这位之后的位数都是11(假如n的最后几位是1000,100,10,那么n-1的最后几位会是0111,011,01),那么一次与运算也会减少一个1。所以就一直将n与n-1作与运算,直到n为0就行了。
代码:
public int hammingWeight(int n) { int sum = 0; while (n != 0) { sum++; n &= (n - 1); } return sum; }
相关文章推荐
- LeetCode 191 Number of 1 Bits
- LeetCode 191:Number of 1 Bits
- leetcode 191 Number of 1 Bits(难易度:Easy)
- 怒刷leetcode题目(2)235,191,141,217,
- LeetCode - 191/190/338 - 二进制有多少个1
- Leetcode_191_Number of 1 Bits
- Leetcode 191 Number of 1 Bits
- [LeetCode]: 191:Number of 1 Bits
- 【LeetCode】190 & 191 - Reverse Bits & Number of 1 Bits
- LeetCode-191 Number of 1 Bits
- leetcode 191 Number of 1 Bits C++
- leetcode刷题。总结,记录,备忘 191
- 191.[Leetcode]Number of 1 Bits
- Leetcode191: Bulls and Cows
- Leetcode_191_Number of 1 Bits
- leetcode 191 Number of 1 Bits(位运算)
- 判断一个整数中有多少个1(二进制)--LeetCode 191
- leetcode 191
- Leetcode 191 Number of 1 Bits
- leetcode191[easy]---Number of 1 Bits