刷爆力扣

【21】杨辉三角

2021-05-10  本文已影响0人  公孙剑人

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pascals-triangle/

题目

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:
输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

思路

很明显,第N层的元素,循环N次即可,并且对应的值可以通过list.get(n-1)层的元素相加拿到,边上的元素固定设置为1。

代码

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<>();
        // 从第一层开始
        for (int i = 0; i < numRows; ++i) {
            List<Integer> temp = new ArrayList<>();
            for (int sub = 0; sub <= i; ++sub) {
                if (sub == 0 || sub == i) {
                    // 边上的元素固定放1即可
                    temp.add(1);
                } else {
                    // 取上一层的两个元素
                    temp.add(result.get(i - 1).get(sub - 1) + result.get(i - 1).get(sub));
                }
            }
            result.add(temp);
        }
        return result;
    }

结果

执行结果
上一篇 下一篇

猜你喜欢

热点阅读