191. 位1的个数
- 给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中设置位 (set bit,指在某数的二进制表示中值为 1 的二进制位)的个数(也被称为汉明重量)。
1. 字符串 + 列表
class Solution(object):def hammingWeight(self, n):""":type n: int:rtype: int"""a = ""a = str(bin(n))[2:]b = [int(char) for char in a]count = 0for i in range(len(b)):if b[i] == 1:count += 1return count
- 时间复杂度: O(log(n)) ,因为n的二进制表示大约需要 log(n) 位
- 空间复杂度: O(log(n))
2. 位运算
class Solution(object):def hammingWeight(self, n):""":type n: int:rtype: int"""count = 0while n:count += n & 1 n >>= 1 return count
- 时间复杂度: O(log(n))
- 空间复杂度: O(1)
3. 取余和整数除法
class Solution(object):def hammingWeight(self, n):a = 0if n == 0:return 0while n > 0:a += n % 2 n //= 2 return a
- 时间复杂度: O(log(n))
- 空间复杂度: O(1)