如果是奇数,等于前面的偶数末位的0变成了1
如果是偶数,相当于左移了一位,就是末位多了一位0
def countBits(self, n):
"""
:type n: int
:rtype: List[int]
"""
#动态规划
res = [0]*(n+1)
for i in range(1,n+1):
if i&1 == 1: #如果是奇数,等于前面的偶数末位的0变成了1
res[i] = res[i-1] + 1
else:
res[i] = res[i/2] #如果是偶数,相当于左移了一位,就是末位加上了一位0
return res