30,416
社区成员




class Solution:
def countBits(self, n: int) -> List[int]:
#ls = [0]
#for i in range(1, n + 1):
# bin_i = 0
# index = 0
# while i > 0:
# bin_i += (i % 2) * pow(10, index)
# index += 1
# i //= 2
# s = str(bin_i)
# ls.append(s.count('1'))
#return ls
ls = [0]
for i in range(1, n + 1):
bin_n = 0
index = 0
t = i
flag = False
while i > 0:
bin_n += (i % 2) * pow(10, index)
index += 1
i //= 2
binStr = str(bin_n)
if binStr[0] == '1' and binStr[1:].count('0') == index - 1:
flag = True
maxTwoPower = i # 记录当前最大的为2的幂的数
if flag:
ls.append(1)
else:
if t % 2 == 1:
ls.append(ls[t - 1] + 1)
else:
ls.append(ls[t//2])
return ls
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
res = [[1]*i for i in range(1, numRows + 1)]
for i in range(2, numRows):
for j in range(1, i): # 每一层的第一个和最后一个不需要算
res[i][j] = res[i-1][j] + res[i-1][j-1]
return res