public class Solution { public IList<int> GetRow(int rowIndex) { List<List<int>> list = new List<List<int>>(); for (int i = 0; i <= rowIndex; i++) { var row = new List<int>(); if (i == 0) { row.Add(1); } else if (i == 1) { row.Add(1); row.Add(1); } else//i>=3 { for (int j = 0; j <= i; j++) { if (j == 0) { row.Add(1); } else if (j == i) { row.Add(1); } else { var pre = list[i - 1]; row.Add(pre[j - 1] + pre[j]); } } } list.Add(row); } var result = list.LastOrDefault(); return result; } }
https://leetcode.com/problems/pascals-triangle-ii/#/description
Python的实现:
1 class Solution: 2 def getRow(self, rowIndex: int) -> List[int]: 3 if rowIndex == 0: 4 return [1] 5 elif rowIndex == 1: 6 return [1,1]; 7 else: 8 tri = [] 9 tri.append([1]) 10 for i in range(1,rowIndex+1): 11 pre = [0] + tri[i-1] + [0] 12 newrow = [] 13 for j in range(len(pre)-1): 14 newrow.append(pre[j]+pre[j+1]) 15 tri.append(newrow) 16 return tri[rowIndex]
Java版:
1 class Solution { 2 public List<Integer> getRow(int rowIndex) { 3 if(rowIndex == 0){ 4 List<Integer> l = new ArrayList<Integer>(); 5 l.add(1); 6 return l; 7 }else{ 8 List<List<Integer>> list = new ArrayList<List<Integer>>(); 9 List<Integer> l1 = new ArrayList<Integer>(); 10 l1.add(1); 11 list.add(l1); 12 for(int i=1;i<=rowIndex;i++){ 13 List<Integer> pre = list.get(i-1); 14 List<Integer> newrow = new ArrayList<Integer>(); 15 newrow.add(1); 16 17 for(int j=0;j<pre.size()-1;j++){ 18 int cur = pre.get(j) + pre.get(j+1); 19 newrow.add(cur); 20 } 21 22 newrow.add(1); 23 list.add(newrow); 24 } 25 return list.get(rowIndex); 26 } 27 } 28 }