持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
一、题目描述:
119. 杨辉三角 II - 力扣(LeetCode) (leetcode-cn.com)
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex **行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: rowIndex = 3
输出: [1,3,3,1]
示例 2:
输入: rowIndex = 0
输出: [1]
示例 3:
输入: rowIndex = 1
输出: [1,1]
提示:
- 0 <= rowIndex <= 33
二、思路分析:
启发来自动态规划题目,求最短三角路径,自底向上处理。本题是采用自顶向下处理
首先分配一个数组,长度为n,为最后一行元素的长度。
每当处理一个元素,可以看到,总是上一层的i和i-1元素相加得到下一层i处的值。然后依次向右移动。
用一个数组完成这样的工作,每次[i] = [i]+[i-1] 都会覆盖[i],所以每次都要保存上一层的[i],用last存储
接着向右移动,last存储的值就会作为本次的[i-1]被保留下来,与[i]相加,得到下一层[i]的值,重复2-4
三、AC 代码:
var getRow = function(rowIndex) {
let n = rowIndex+1;
if (n == 1) return [1];
if (n == 2) return [1, 1]
let arr = Array.from({length: n});
arr[0] = 1; arr[1] = 1;
let last = 1;
for (let i = 2; i < n; i++) {
let j = 1;
for (;j < i; j++) {
let temp = arr[j];
arr[j] = last + arr[j];
last = temp;
}
arr[j] = 1;
}
return arr;
};
范文参考:
滚动数组的动画图解,优化空间复杂度 - 杨辉三角 II - 力扣(LeetCode)
【LetMeFly】119.杨辉三角 II:基于原地滚动的空间优化 - 杨辉三角 II - 力扣(LeetCode)
「手画图解」多解法:动态规划、递归、记忆化递归 |119.杨辉三角II - 杨辉三角 II - 力扣(LeetCode)