给定一个非负整数numRows,生成【杨辉三角】的前numRows行。
在【杨辉三角】中,每个数都是它左上方和右上方的数的和。
从表面看起来,这个并不是动态规划的例子。
输入5,那么定义一个list list
for循环中5次,每次length+1;
3-2=2-1+2-2(表示第三行第二个数字等于第二行第一个数字加上第二行第二个数字)
5-3 = 4-2 + 4-3
4-2 = 3-1 + 3-2
或者说,杨辉三角本身就是一个记录性过程。每一步由上一步决定。
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> listList = new ArrayList<>();
for(int i = 0; i < numRows; i++){
List<Integer> list = new ArrayList<>();
list.add(1);
if(i == 1){
list.add(1);
}
if(i > 1) {
for (int j = 1; j < i; j++){// 第三行 j只能等一1;i等于2
list.add(listList.get(i - 1).get(j - 1) + listList.get(i - 1).get(j));
}
list.add( 1);
}
listList.add(list);;
}
return listList;
}
}