LeetCode-191-位1的个数

2020-10-11  本文已影响0人  阿凯被注册了
image.png
解题思路0
  1. 输入n为32位的无符号整数,那么i遍历0~31
  2. 要算出多少位是1,按位与操作;
  3. mask初始值为1,每次向左移一位:mask<<=1

Python3代码

class Solution:
    def hammingWeight(self, n: int) -> int:
        mask = 1
        bit = 0 
        for i in range(0, 32):
            if n & mask:
                bit+=1
            mask<<=1
        return bit

解题思路1:

  1. n&(n-1)即可以消除n最末位的1;
  2. 例如:7(0111)&6(0110)=6(0110)
  3. 6(0110)&5(0101)=4(0100)6的末位1消除后变成4。
class Solution:
    def hammingWeight(self, n: int) -> int:
        bit=0
        while n != 0:
            bit +=1
            n &= (n-1)
        return bit
上一篇 下一篇

猜你喜欢

热点阅读