当前位置 博文首页 > Liu,:Leetcode——杨辉三角(找规律)

    Liu,:Leetcode——杨辉三角(找规律)

    作者:[db:作者] 时间:2021-07-20 09:43

    1. 题目

    在这里插入图片描述

    2. 题解

    在这里插入图片描述
    把这个三角形往左边拉直就会发现,除了两边的都是1以外,其他每个格子的值都是他正上面格子和左上角格子的和。

        public static List<List<Integer>> generate(int numRows) {
            //结果值
            List<List<Integer>> res = new ArrayList<>();
            //每一行的元素
            ArrayList<Integer> row = new ArrayList<>();
            for (int i = 0; i < numRows; i++) {
                //下面一行都会比上面一行多一个元素,我们在第一个位置给他加个1
                row.add(0, 1);
                //遍历每一行的结果,遍历的时候跳过第一个和最后一个,
                //每个格子的值都是他正上面和左上角元素的和,
                //当前的row中存储的是上一行的值,每一行在上一行的基础上进行更新
                for (int j = 1; j < row.size() - 1; j++)
                    row.set(j, row.get(j) + row.get(j + 1));
                    //有人可能会问,为什么正上和正上左 是 j 和 j+1(这不是正上和正上右么?)
                    //这是因为最开始row.add(0, 1); 导致原来的位置都往后挪了一个
                //把结果存放到res中
                res.add(new ArrayList<>(row));	//一行一行加进去 所以需要 new ArrayList<>(row)
            }
            return res;
        }
    
    • row.set(j, row.get(j) + row.get(j + 1));
      有人可能会问,为什么正上和正上左 是 j 和 j+1(这不是正上和正上右么?)
      这是因为最开始row.add(0, 1); 导致原来的位置都往后挪了一个
    cs
    下一篇:没有了