题目大意
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
image.png
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
思路
用List>存储每一行的数列,在迭代地推算下一行的数列,首先要取出前一行。需要注意数组下标不要越界。
代码一
public List> generate(int numRows) {
List> res = new ArrayList<>();
if(numRows==0) return res;
res.add(new ArrayList<>(Arrays.asList(1)));
for(int i=1;i origin = res.get(i-1);
List cur = new ArrayList<>();
cur.add(1); //第0列总是0
for(int j=1;j
运行时间2ms。
代码二
public List> generate(int numRows) {
List> res = new ArrayList<>();
if(numRows==0) return res;
res.add(new ArrayList<>(Arrays.asList(1)));
if(numRows==1) return res;
res.add(new ArrayList<>(Arrays.asList(1,1)));
if(numRows==2) return res;
for(int i=2;i origin = res.get(i-1);
List cur = new ArrayList<>();
for(int j=0;j<=i;j++) {
if(j==0 || j==i) cur.add(1);
else cur.add(origin.get(j-1)+origin.get(j));
}
res.add(cur);
}
return res;
}
运行时间1ms。