Leetcode Day5 4
剑指 Offer 15. 二进制中1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。
呜呜呜,歪了刻晴,我不想活了,我的绫人啊。
发病结束
我第一个用的方法就是lowbit(现学现用了)
class Solution:
def hammingWeight(self, n: int) -> int:
def lowbit(n:int)->int:
return n&(-n)
res=0
while n:
tmp=lowbit(n)
n-=tmp
res+=1
return res

但是py里面这么搞似乎太慢了,看看大佬们的题解吧……
大佬用的n&(n−1)

也就是说去掉了最右侧的一个1,和n-n&(-n)是一个意思吧
class Solution:
def hammingWeight(self, n: int) -> int:
res=0
while n:
res+=1
n=n&(n-1)
return res

这样的话似乎快一点
