【LeetCode刷题笔记】leetcode题——杨辉三角
题目
思路
①用二维数组的思维,建一个顺序表ret,表里的元素也是顺序表ret,这样就能表示一个二维数组。 ②一行一行处理,先处理第一行,只有一个元素就是 1 ③然后处理每一行的时候,要特别处理第一个元素和最后一个元素,头尾必然是 1 ④将处理好的每一行加入到ret顺序表里就好啦
代码实现
class Solution {
public List<List<Integer>> generate(int numRows) {
if(numRows==0)//先判断参数是否为0
return null;
//建一个ret顺序表
List<List<Integer>> ret = new ArrayList<>();
//处理第一行
List<Integer> firstRow = new ArrayList<>();
firstRow.add(1);
ret.add(firstRow);
//从第二行开始处理
for(int i=1 ; i<numRows ; i++){
//获取上一行prevRow
List<Integer> prevRow = ret.get(i-1);
//创建行对象
List<Integer> curRow = new ArrayList<>();
curRow.add(1);//处理每一行第一个元素,为1
//处理每一行中间的元素,杨辉三角里当前元素值等于左上角+右上角
for(int j=1 ; j< i ; j++){
int val = prevRow.get(j) + prevRow.get(j-1);
curRow.add(val);
}
//处理每一行的结尾,也都是1
curRow.add(1);
ret.add(curRow);//把处理好的每一行加入到ret数组里
}
return ret;
}
}
