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)