给定一个非负整数num。对于0≤i≤num范围内的每个数字i,计算其二进制表示形式中的1的个数,并将其作为数组返回。
class Solution(object):
def countBits(self, num):
"""
:type num: int
:rtype: List[int]
"""
r = [0] # bin(0)=0
a = 1 #2的0次方
for i in range(1, num+1):
r.append(r[i-a]+1)
if i == 2*a-1:
a = 2*a # 2的n次方
return r