【刷题打卡】119. 杨辉三角 II

114 阅读1分钟

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

一、题目描述:

119. 杨辉三角 II - 力扣(LeetCode) (leetcode-cn.com)   给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex **行。

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

1626927345-DZmfxB-PascalTriangleAnimated2.gif

示例 1:

输入: rowIndex = 3
输出: [1,3,3,1]

示例 2:

输入: rowIndex = 0
输出: [1]

示例 3:

输入: rowIndex = 1
输出: [1,1]

提示:

  • 0 <= rowIndex <= 33

二、思路分析:

原来想着用两个ArrayList,一个保存上一行的数据,另一个保存当前行的数据。 但是后来发现可以只用一个List。只要一个变量保存一下同一行中上一个位置的数据即可。

三、AC 代码:

class Solution {
    public List<Integer> getRow(int rowIndex) {
        List<Integer> ans = new ArrayList<Integer>();
        ans.add(1);
        for(int i = 1; i <= rowIndex; i++) {
            int prev = 1;
            for(int j = 1; j <= i; j++) {
                if(j == i) {
                    ans.add(1);
                } else {
                    int tmp = ans.get(j);
                    ans.set(j,ans.get(j) + prev);
                    prev = tmp;
                }
            }
        }
        return ans;
    }
}

四、总结:

还是主要考动态规划吧,这个确实需要多多练习~

范文参考:

【杨辉三角 II】【C语言详解】【动态规划入门8\50】 - 杨辉三角 II - 力扣(LeetCode) (leetcode-cn.com)

119. 杨辉三角 II 题解 - 力扣(LeetCode) (leetcode-cn.com)

原地递推:五行代码,双百! - 杨辉三角 II - 力扣(LeetCode) (leetcode-cn.com)