[leet code] Pascal's Triangle

来源:互联网 发布:网络剧版权价值 编辑:程序博客网 时间:2024/06/14 16:37

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]]

=============

Analysis:

The only difficulty for me is the definition of Pascal's triangle.  After reading wikipedia:



Accordingly, we need only using 2 levels of iterations to build the Pascal's triangle.  the first one is for each level/row in the triangle, and the second one is for each element in the current level/row.

public class Solution {    public ArrayList<ArrayList<Integer>> generate(int numRows) {        // result array list        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();                // special case        if (numRows == 0) return result;                // construct the whole Pascal's triangle        for (int i=1; i<=numRows; i++){            // construct each level in Pascal's triangle            ArrayList<Integer> curLevel = new ArrayList<Integer>();                        // level 1            if (i==1) {                curLevel.add(1);                result.add(curLevel);            }                        // other levels            else{                // get previous level of integer array list                ArrayList<Integer> preLevel = result.get(i-2);                                // cunstruct current level of integer array list                for (int j=1; j<=i; j++){                    if(j==1 || j==i) curLevel.add(1);                    else curLevel.add(preLevel.get(j-2) + preLevel.get(j-1));                }                result.add(curLevel);            }        }        return result;    }}



0 0
原创粉丝点击