欢迎光临散文网 会员登陆 & 注册

Leetcode Day5 4

2022-04-05 16:49 作者:我喜欢喝一点点  | 我要投稿

剑指 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&(n1)



也就是说去掉了最右侧的一个1,和n-n&(-n)是一个意思吧

class Solution:
   def hammingWeight(self, n: int) -> int:
       res=0
       while n:
           res+=1
           n=n&(n-1)
       return res



这样的话似乎快一点


Leetcode Day5 4的评论 (共 条)

分享到微博请遵守国家法律