本题仅仅要求返回索引对应的行。
思路1:递归。
根据递推公式,递归求上一行,最后求出当前行。
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
if rowIndex ==0 : return [1] # 起点为1
else:
lastRow = self.getRow(rowIndex-1) # 调用本身获取上一索引的结果,再计算当前行
curRow = []
for j in range(0,rowIndex+1):
if j==0 or j==rowIndex: # 首尾为1
curRow.append(1)
else: # 中间根据公式计算
curRow.append(lastRow[j-1]+lastRow[j])
return curRow
如果多加两行判断索引为1和2,击败更多,哈哈:
elif rowIndex == 1: return [1,1]
elif rowIndex == 2: return [1,2,1]
思路2:动态规划。T(n)=O(K2), S(n)=O(K2)
1.初始化preRow (相当于dp数组)
2.根据preRow 计算curRow
3.把curRow 赋值给preRow ,再计算新的curRow
4.迭代的计算下去。。。
class Solution:
def getRow(self, rowIndex: int) -> List[int]
preRow = [1] # 初始值
if rowIndex==0: return preRow
for i in range(1,rowIndex+1):
curRow = []
for j in range(0,i+1):
if j==0 or j==i:
curRow.append(1)
else:
curRow.append(preRow[j-1]+preRow[j])
preRow = curRow
return curRow
来源:CSDN
作者:三岁与十八
链接:https://blog.csdn.net/qq_27921205/article/details/104214771