1. 前 n 个数字二进制中 1 的个数
给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。
方法一:
def countBits(n):
res = []
for i in range(n + 1):
res.append(countOnes(i))
return res
def countOnes(x):
count = 0
while x > 0:
x &= x - 1
count += 1
return count
方法二:
def countBits(n):
res = [0]
for i in range(1, n + 1):
res.append(res[i & (i - 1)] + 1)
return res
方法三:
def countBits(n):
res = []
for num in range(n + 1):
binary = bin(num)[2:] # 将数字转换为二进制字符串并去除前缀'0b'
ones_count = sum(1 for bit in binary if bit == '1')
res.append(ones_count)
return res