118. Pascal's Triangle

来源:互联网 发布:大数据的主要来源于 编辑:程序博客网 时间:2024/06/06 19:43

Given numRows, generate the first numRows of Pascal's triangle.

For example, given numRows = 5,
Return

[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1,4,6,4,1]]

每一行cur都是前一行pre生成出来的,从第三行开始除了首末加"1"外还需要把pre的每两个相邻的和加到cur里。

Time Complexity: O(1 + 2 + 3 + 4... + n) = O(n^2).

Space: O(1), regardless res.

public class Solution {    public List<List<Integer>> generate(int numRows) {                List<List<Integer>> res = new ArrayList<List<Integer>>();        if(numRows<=0) return res;        List<Integer> pre =new ArrayList<Integer>();        pre.add(1);        res.add(pre);        for(int i=0;i<numRows-1;i++){            List<Integer> cur =new ArrayList<Integer>();            cur.add(1); //首部加第一个1            for(int j=1;j<pre.size();j++){//第三行才会进入此循环                cur.add(pre.get(j-1)+pre.get(j));            }            cur.add(1);//末尾加最后一个1            res.add(cur);            pre=cur;        }        return res;    }}