class YanghuiTriangle:
"""
118. 杨辉三角
https://leetcode.cn/problems/pascals-triangle/description/
"""
def generate(self, numRows: int) -> List[List[int]]:
"""
递归
:param numRows:
:return:
"""
if numRows == 1:
triangle = []
firstRow = [1]
triangle.append(firstRow)
return triangle
triangle = self.generate(numRows - 1)
bottomRow = triangle[-1]
newRow = [1]
for i in range(len(bottomRow)-1):
newRow.append(bottomRow[i] + bottomRow[i+1])
newRow.append(1)
triangle.append(newRow)
return triangle
def generate2(self, numRows: int) -> List[List[int]]:
"""
迭代
:param numRows:
:return:
"""
res = []
if numRows < 1:
return res
# 先把第一层装进去作为 base case
firstRow = [1]
res.append(firstRow)
# 开始一层一层生成,装入 res
for i in range(2, numRows + 1):
preRow = res[-1]
res.append(self.generateNextRow(preRow))
return res
# 输入上一层的元素,生成并返回下一层的元素
def generateNextRow(self, prevRow: List[int]) -> List[int]:
curRow = [1]
for i in range(1, len(prevRow)-1):
curRow.append(prevRow[i] + prevRow[i+1])
curRow.append(1)
return curRow
杨辉三角 -- 迭代和递归分别实现
于 2024-01-10 10:27:32 首次发布