2020快手:二进制中有多少个1[python][位运算]

二进制中有多少个1

http://www.nowcoder.com/questionTerminal/43d22dbc8bef46529e722dc6a5fb1e2d

剑指Offer原题,不利用API或者暴力统计的话,稍微扩展一种巧妙的解法吧。刚好面试的时候也要求用位运算用小于O(n)的方法求解。

注意python2.7不能有中文注释

n = int(raw_input()) # Notice: raw_input() for python 2.7
cnt = 0
while n: # 复杂度会小于二进制的总位数
    n = n & (n-1) # 每次可将最右边的1消去
    cnt += 1
print(cnt)
全部评论

相关推荐

S_Holmes:一想到我苦苦追求的迪子私下里却是985的马子,我的心就在滴血😭😭😭
点赞 评论 收藏
分享
07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 12:26
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务