题目:
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] ]
思路:
杨辉三角的构造方法,利用公式:an[i]=an-1[i-1]+an-1[i]
代码:
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> triangle = new ArrayList<List<Integer>>();
//处理特殊情况
if(numRows == 0){return triangle;}
//构造杨辉三角第一层,并返回特殊情况
List<Integer> level1 = new ArrayList<Integer>();
level1.add(1);
triangle.add(level1);
if(numRows == 1){return triangle;}
//构造杨辉三角第二层,并返回特殊情况
List<Integer> level2 = new ArrayList<Integer>();
level2.add(1);
level2.add(1);
triangle.add(level2);
if(numRows == 2){return triangle;}
//循环构造杨辉三角an[i]=an-1[i-1]+an-1[i]
List<Integer> pre = level2;
for(int i = 2; i < numRows; i++){
List<Integer> cur = new ArrayList<Integer>();
cur.add(1);
for(int j = 0; j < pre.size()-1; j++){
cur.add(pre.get(j)+pre.get(j+1));
}
cur.add(1);
triangle.add(cur);
pre = cur;
}
return triangle;
}
}