public class Solution { public IList<IList<int>> Generate(int numRows) { var list = new List<IList<int>>(); for (int i = 0; i < numRows; i++) { var row = new List<int>(); if (i == 0) { row.Add(1); } else if (i == 1) { row.Add(1); row.Add(1); } else { var prerow = list[i - 1].ToList(); for (int j = 0; j <= i; j++) { if (j == 0) { row.Add(1); } else if (j == i) { row.Add(1); } else { row.Add(prerow[j - 1] + prerow[j]); } } } list.Add(row); } return list; } }
https://leetcode.com/problems/pascals-triangle/#/description
Python的实现:
1 class Solution: 2 def generate(self, numRows: int) -> 'List[List[int]]': 3 result = []#定义一个空数组,用于保存基本最终结果(二维数组)) 4 for i in range(numRows): 5 if i == 0:#第一行:[1] 6 result.append([1]) 7 elif i == 1:#第二行:[1,1] 8 result.append([1,1]) 9 else:# i >= 2#第三行以后 10 prerow = result[-1]#上一行 11 currow = []#当前行 12 for j in range(i+1):#循环j,表示二维数组中的:第i行、第j列 13 if j == 0 or j == i:#第一列和最后一列是1 14 currow.append(1) 15 else:#中间列,上一行的第j-1列元素 + 上一行的第j列元素 16 currow.append(prerow[j-1] + prerow[j]) 17 result.append(currow)#将当前行添加到结果数组中 18 return result#返回结果数组