分类:二维数组及滚动数组
题目描述:
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
解题思路1:
在杨辉三角中,每个数是它左上方和右上方的数的和。
题目给的这一句话提示就够了。稍微麻烦的是要考虑头尾为1的情况
那不如根据行创建对应全1的列表,然后在根据非边缘的值进行公式套用
class Solution: def generate(self, numRows: int) -> List[List[int]]: # 根据行创建对应全1的列表,然后在根据非边缘的值进行公式套用 ret = [] for i in range(1,numRows+1): temp = [1 for i in range(i)] for j in range (1,len(temp)-1): # 这里注意是 i-2 temp[j] = ret[i-2][j-1]+ret[i-2][j] ret.append(temp) return ret
解题思路2:
class Solution: def generate(self, numRows: int) -> List[List[int]]: ret = list() for i in range(numRows): row = list() for j in range(0, i + 1): if j == 0 or j == i: row.append(1) else: row.append(ret[i - 1][j] + ret[i - 1][j - 1]) ret.append(row) return ret