春招刷题 - 118. 杨辉三角

159 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

118. 杨辉三角 - 力扣(LeetCode) (leetcode-cn.com)

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

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

image.png

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1
输出: [[1]]

提示:

1 <= numRows <= 30

二、思路分析:

1)首先我们需要利用外层for循环得到行数 2)根据杨辉三角特点对每一行的每个位置判断填值

杨辉三角特点: 1)杨辉三角每一层数的个数和层数相同 2)杨辉三角每一层第一个和最后一个都是1 3)杨辉三角其他位置都是上一层该位置和前一个位置的和

三、AC 代码:

class Solution {
    public List<List<Integer>> generate(int numRows) {
                List<List<Integer>> list = new ArrayList<>();
              
                for (int i = 0; i < numRows; i++) {
                        List<Integer> list1 = new ArrayList<>();                                              for (int j = 0; j <= i; j++) {
                                if (j == 0 || j == i){
                                        list1.add(1);
                                }else {
                                        list1.add(list.get(i-1).get(j-1) + list.get(i-1).get(j));
                                }
                        }
                        list.add(list1);
                }
                return list;
    }
}

四、总结:

这题知道杨氏三角的公式就很好解了。

范文参考

杨辉三角 - 杨辉三角 - 力扣(LeetCode) (leetcode-cn.com)

关于循环的一点反思 - 杨辉三角 - 力扣(LeetCode) (leetcode-cn.com)