以前接触杨辉三角的时候了解到杨辉三角有一个性质:
下一行的第i个元素等于上一行第i-1和第i个元素之和
因此很容易想到递归
numRows为1时是递归出口,杨辉三角的第一行只有一个元素1
注意:
每行的行首行尾需要做特殊讨论只能是1
代码如下:
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<>();
myGenerate(numRows, res);
return res;
}
public List<Integer> myGenerate(int numRows, List<List<Integer>> res) {
List<Integer> list = new ArrayList<>();
if (numRows == 1) {
list.add(1);
res.add(list);
return list;
}
List<Integer> lastList = myGenerate(numRows - 1, res);
for (int i = 0; i < numRows; i++) {
if (i == 0 || i == numRows - 1)
list.add(1);
else
list.add(lastList.get(i - 1) + lastList.get(i));
}
res.add(list);
return list;
}
}