LeetCode Pascal's Triangle II

Given an index k, return the kth row of the Pascal's triangle.

For example, given k = 3,
Return [1,3,3,1].

Note:
Could you optimize your algorithm to use only O(k) extra space?

 

解法先参考原来第一题的代码,稍微修改就行。

public class Solution {
    
    
    List<List<Integer>> lastNumberlist = new ArrayList<List<Integer>>();
    public List<Integer> getRow(int rowIndex) {
        rowIndex++;
        if (rowIndex==0) {
        return null;
        }
        ArrayList<Integer> list=new ArrayList<>();
        int num1,num2;
        list.add(1);
        lastNumberlist.add(list);
        if (rowIndex==1) {
            return lastNumberlist.get(lastNumberlist.size()-1);
        }
        list=new ArrayList<>();
        list.add(1);
        list.add(1);
        lastNumberlist.add(list);
        if (rowIndex==2) {
            return lastNumberlist.get(lastNumberlist.size()-1);
        }
        for (int i = 3; i <=rowIndex ; i++) {
                int[] newline=new int[i];
                for (int j = 0; j <= i/2; j++) {
                    if (j==0) {                
                        newline[j]=1;
                        newline[i-1-j]=1;
                    }else {
                        num1=lastNumberlist.get(lastNumberlist.size()-1).get(j);
                        num2=lastNumberlist.get(lastNumberlist.size()-1).get(j-1);
                        newline[j]=num1+num2;
                        newline[i-1-j]=num1+num2;        
                    }
                }
                list=new ArrayList<>();
                for (int j : newline) {
                    list.add(j);
                }
                
                lastNumberlist.add(list);
        }
        return lastNumberlist.get(lastNumberlist.size()-1);
    }
}

 

posted @ 2014-10-21 18:00  birdhack  阅读(132)  评论(0编辑  收藏  举报