剑指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)
剑指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)