题目
思路
①用二维数组的思维,建一个顺序表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; } }