力扣练习之杨辉三角

我爱海鲸 2024-08-02 17:18:22 初级算法

简介初级算法、其他

原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xncfnv/

解法一:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<>();
        ArrayList<Integer> row = new ArrayList<>();

        for (int i = 0 ; i < numRows; i++) {
            // 这里每次都会将第一个元素设置为1,然后其他元素依次推后
            row.add(0,1);
            // 这里再次遍历每一行的元素
            for (int j = 1; j < row.size()-1; j++) {
                // row.get(j)表示的是第一个需要加的元素,row(j+1)表示第二个需要加的元素
                row.set(j,row.get(j)+row.get(j+1));
            }
            result.add(new ArrayList(row));
        }
        return result;
    }
}

思路:

这里就是row.get(j)+row.get(j+1)需要好好理解一下,就没什么大问题了。

2024-08-02 start:

row.add(0,1)这行代码

第一次遍历的时候是1

第二次遍历的时候是1、1

第三次遍历的时候是1、1、1

因为第一个元素和最后一个元素都是1,所以循环不处理第一个元素和最后一个元素

for (int j = 1; j < row.size()-1; j++) {  这里的循环表示第一次遍历和第二次遍历都没有执行,第三次遍历的时候赋值的就是中间的那个元素,它的值就是上次遍历的那两个元素的和

所以第三次遍历的时候它的值就是1、2、1

第四次执行row.add(0,1)它的值是1、1、2、1

然后第一次循环它的值是1、3、2、1

第二次循环它的值是1、3、3、1

第五次执行row.add(0,1)它的值是1、1、3、3、1

第一次循环的时候它的值是1、4、3、3、1

第二次循环的时候它的值是1、4、6、3、1

第三次循环的时候它的值是1、4、6、4、1

end

你好:我的2025