1.题目详情
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。
2.解题思路
暴力法,找每个数字转化为二进制后count1的个数。
题解的动态规划也很奈斯。
3.代码实现
class Solution:
def countBits(self, num: int) -> List[int]:
arr = []
for i in range(num+1):
m = str(bin(i)[2:]).count('1')
arr.append(m)
return arr
动态规划
class Solution:
def countBits(self, num: int) -> List[int]:
dp=[0]*(num+1)
for i in range(num//2+1):
dp[i*2]=dp[i]
if i*2+1<=num:
dp[i*2+1]=dp[i]+1
return dp
4.知识点
–