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 }

 

posted on 2017-04-22 08:41  Sempron2800+  阅读(106)  评论(0编辑  收藏  举报