经典递推 设f[num]为当前数字含有的二进制1的个数 如果当前数为奇数,则二进制末尾为1,f[num]=f[num>>1] + 1 如果当前数为偶数,则二进制末尾为0,f[num]=f[num>>1] class Solution: def countBits(self, num: int) -> List[int]: ans = [0] for i in range(1, num + 1): ans.append(ans[i >> 1] + (i & 1)) return ans