题目链接:https://leetcode-cn.com/problems/counting-bits/
难度:简单
描述:
给你一个整数 n
,对于 0 <= i <= n
中的每个 i
,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1
的数组 ans
作为答案。
题解
- 当
i
的末尾为1
时,它二进制表示中1
的个数比i - 1
的多一个。(i
是奇数) - 当
i
的末尾为0
时,它二进制表示中1
的个数与i / 2
的一样多。(i
是偶数) - 当
i == 0
时,1
的个数是0
。class Solution:
def countBits(self, n: int) -> List[int]:
ret = [0 for _ in range(n+1)]
# ret[0] = 0
for i in range(1, n+1):
if i & 1 == 1:
ret[i] = ret[i-1]+1
else:
ret[i] = ret[i//2]
return ret