【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;
    }
}
经验分享 程序员 微信小程序 职场和发展