边工作边刷题:70天一遍leetcode: day 46-1
Counting Bits
要点:这题一开始没想出来,看了hint解出来了。估计想时间长点是可以想出来的。就是gray code的类似思路,新序列就是已经得到结果的序列左边高位补1,所以即1的个数+1。所以按这个顺序iterate多遍直到某个值超过了num
class Solution(object):
def countBits(self, num):
"""
:type num: int
:rtype: List[int]
"""
res = [0]*(num+1)
if num==0: return res
res[1]=1
if num==1: return res
end = 2
while True:
for i in xrange(end):
if end+i<num+1:
res[end+i]=res[i]+1
else:
return res
end+=end