119.杨辉三角 II
【LetMeFly】119.杨辉三角 II:基于原地滚动的空间优化
力扣题目链接:https://leetcode.cn/problems/pascals-triangle-ii/
给定一个非负索引 rowIndex
,返回「杨辉三角」的第 rowIndex
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: rowIndex = 3 输出: [1,3,3,1]
示例 2:
输入: rowIndex = 0 输出: [1]
示例 3:
输入: rowIndex = 1 输出: [1,1]
提示:
0 <= rowIndex <= 33
进阶:
你可以优化你的算法到 O(rowIndex)
空间复杂度吗?
方法一:构造整个杨辉三角
这道题和LeetCode 118.杨辉三角类似。
不同之处在于:
- 这道题只需要返回最后一行
- 这道题的行数是从0开始的
那么方法一就是类似LeetCode 118.杨辉三角,返回时只返回最后一行即可。
具体思路可参考https://blog.letmefly.xyz/2022/07/17/LeetCode 0118.杨辉三角/
- 时间复杂度$O(N^2)$
- 空间复杂度$O(N^2)$,因为需要存储整个三角
AC代码
C++
1 |
|
方法二:原地滚动 + 只构造最后一行
不难发现,第$i+1$行的计算只需要用到第$i$行的值。
因此,我们只开辟最后一行的空间,并且原地滚动即可。
原地滚动的时候,记得从后往前计算。
- 时间复杂度$O(N^2)$
- 空间复杂度$O(1)$,答案不计入算法空间复杂度
AC代码
C++
1 |
|
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/125853536
119.杨辉三角 II
https://blog.letmefly.xyz/2022/07/18/LeetCode 0119.杨辉三角II/