剑指 Offer 15. 二进制中1的个数
链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/
二进制的简单应用,代码中第一种写法时间复杂度:O(log2n),需要逐位判断,这里的n表示1在的最高位数,空间复杂度:O(1);第二种写法中注意n&(n-1)可以消除掉n的最左边的1,时间复杂度:O(M),M为数字n中1的个数,空间复杂度:O(1)
class Solution:
def hammingWeight(self, n: int) -> int:
# res = 0
# while n:
# if n&1:
# res += 1
# n = n >> 1
# return res
res = 0
while n:
n = n&(n-1)
res += 1
return res