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;
}
}