leetcode刷题
1.第一题,杨辉三角,题目如下:
这道题的思路很简单,处理好一行和0行的特殊情况后,就是动态生成,用一个demo来表示当前生成的列表,列表首尾为1,此外demo[j]等于上一行的j-1个元素加上第j个元素之和,这样暴力求解出来,害我还是太垃圾了,代码如下:
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
result=[]
if numRows==0:
return []
if numRows==1:
return [[1]]
result.append([1])
for i in range(1,numRows):
demo=[]
for j in range(i+1):
if j==0 or j==i:
demo.append(1)
else:
demo.append(result[i-1][j-1]+result[i-1][j])
result.append(demo)
return result
2.杨辉三角形的进阶,要求o(n)的空间复杂度,题目如下:
这道题看了一下其他人的思路,茅塞顿开。
代码如下:
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
result=[1]
for i in range(1,rowIndex+1):
result.insert(0,0)
for j in range(i):
result[j]=result[j]+result[j+1]
return result