给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
![](https://img.haomeiwen.com/i6638651/0d71ee4c1f279051.gif)
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
C++
class Solution {
public:
vector<int> getRow(int rowIndex) {
return generate(rowIndex+1).back();
}
vector<vector<int>> generate(int numRows) {
if(numRows == 0) return {};
vector<vector<int>> matrix;
for(int i=0;i<numRows;i++){
vector<int> row;
for(int j=0;j<i+1;j++){
if(i == j || j == 0){
row.push_back(1);
}
else{
row.push_back(matrix[i-1][j-1]+matrix[i-1][j]);
}
}
matrix.push_back(row);
}
return matrix;
}
};
C++2 【妙啊】
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> res(rowIndex+1,0);
res[0]=1;
for(int i=1;i<rowIndex+1;i++)
{
for(int j=i;j>=1;j--)
res[j]+=res[j-1];
}
return res;
}
};
网友评论