【题目】
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
【示例】
输入: 3
输出: [1,3,3,1]
【进阶】
你可以优化你的算法到 O(k) 空间复杂度吗?
【代码】
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> pre(1,1);
if(rowIndex==0)
return pre;
for(int i=1;i<=rowIndex;i++){
vector<int> rs(1,1);
for(int j=1;j<i;j++){
rs.push_back(pre[j-1]+pre[j]);
}
rs.push_back(1);
pre=rs;
}
return pre;
}
};
【改进】公式法
class Solution {
public:
vector<int> getRow(int rowIndex) {
rowIndex++;
int up=1,down=1;
vector<int> rs(1,1);
for(int i=1;i<rowIndex-1;i++){
up*=(rowIndex-i);
down*=i;
rs.push_back(up/down);
}
rs.push_back(1);
return rs;
}
};