Number of 1Bits
题目
Write a function that takes an unsigned integer and
returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation
00000000000000000000000000001011, so the function should return 3.
解答
@requires_authorization
class Solution:
# @param n, an integer
# @return an integer
def helper(self, n, a):
if n == 0:
return a
else:
return self.helper(n / 2, a + (n % 2))
def hammingWeight(self, n):
return self.helper(n, 0)
解释
数字n表示为二进制的过程为,从最低位到最高位的值为,先取n模2,然后将n置为n/2,一直到n为0为止。如11表示为1011的过程:11->5->2->1->0; 从低到高位: 1->1->0->1, 也就是1011。
该算法的复杂度为O(log n)。