给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
C++
//DP+原地算法: 空间复杂度O(k)
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> dp(rowIndex + 1, 1);
for(int i = 0; i < rowIndex + 1; i++){
for(int j = i - 1; j >= 1; j--){ //从右倒数第2个数字开始,往左遍历,直到正数第2个数
dp[j] = dp[j] + dp[j-1]; //该数下一轮的值等于这个数加上前一个数。
}
}
return dp;
}
};