119. 杨辉三角 II
给定一个非负索引 rowIndex
,返回「杨辉三角」的第 rowIndex
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> kRows(rowIndex+1); //第K行的vector大小为 rowIndex+1
for(int i =0; i<=rowIndex; i++){
kRows[i] = 1;
for(int j=i; j > 1; j--){ // j>1才会进入这个循环。kRows的长度逐渐增大(巧妙)
kRows[j-1]= kRows[j-2] + kRows[j-1];
}
}
return kRows;
}
};
进阶:
你可以优化你的算法到 O(rowIndex)
空间复杂度吗?
118. 杨辉三角
给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
// 一些vector的操作值得学习。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> list;
list.push_back({1});
for(int i=1; i < numRows; i++){
// 添加一行
list.push_back({}); // 添加一个空的vector<int>
list.back().push_back(1);
for(int j = 1; j<i; j++) {
// 访问新添加的行并添加元素
int element = list[i-1][j-1] + list[i-1][j];
list.back().push_back(element);
}
list.back().push_back(1); // 最后的数字1
}
return list;
}
};