Pascal's Triangle II

来源:互联网 发布:上海师范大学网络教育 编辑:程序博客网 时间:2024/05/17 08:36

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?

思路:这个题目跟Pascal's Triangle差不多,差别在于Pascal's Triangle是用上一行的数据来生成下一行的数据。

这里只有一行。如果模仿Pasacal 肯定不行,因为之前使用 list(j) + list(j+1)来生成。这里list.add(1)会将list(j+1)数据改变掉。

办法就是反着加。

list(j)+list(j-1) , 然后 后面再加1.

for example:

1

11

 1  2  + 1 -> 1 2 1

                   1 3 3 +1 ->   1  3  3  1

                                        1  4  6  4 +1 - > 1 4 6 4 1

public class Solution {    public List<Integer> getRow(int rowIndex) {        List<Integer> prelist = new ArrayList<Integer>();        if(rowIndex<0) return prelist;        prelist.add(1);        if(rowIndex == 0) return prelist;                for(int i=1; i<=rowIndex; i++){            List<Integer> curlist = new ArrayList<Integer>();            curlist.add(1);            for(int j=prelist.size()-1; j>0; j--){                curlist.add(prelist.get(j) + prelist.get(j-1));            }            curlist.add(1);            prelist = curlist;        }        return prelist;    }}


0 0
原创粉丝点击