Pascal's Triangle
GivennumRows, generate the firstnumRowsof Pascal's triangle.
For example, givennumRows= 5, Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
分析
recursive。每次从前面结果的最后一层计算出新层加入。 A[i] = A[i-1]+A[i],如果i-1或者i出界就用0。
用数组来初始化一个arraylist
new ArrayList<Integer>(Arrays.asList(1,2,3,5,8,13,21));
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ret = new ArrayList<>();
if(numRows < 1)
return ret;
if(numRows == 1){
ret.add(new ArrayList<Integer>(Arrays.asList(1)));
return ret;
}
List<List<Integer>> last = generate(numRows - 1);
List<Integer> level = last.get(last.size() - 1);
List<Integer> path = new ArrayList<Integer>();
for(int i = 0; i <= level.size(); i ++){
int prev = i - 1 < 0 ? 0 : level.get(i - 1);
int cur = i == level.size() ? 0 : level.get(i);
path.add(prev + cur);
}
ret.addAll(last);
ret.add(path);
return ret;
}
}
Last updated
Was this helpful?