思路:
空间复杂度要求 O(rowIndex),可以用滚动数组,我们可以发现,res[i][j] = res[i-1][j] + res[i-1][j],res[i][j]只用到了上一层的数据,所以可以用滚动数组,我们在应用滚动数组的时候其实不需要额外的考虑滚动数组的事情,因为第i层用的第i-1层,但是i-2层已经不用了,所以存在一个奇偶的关系,所以在第一维i & 1 就可以解决这个问题。
代码:
class Solution {
public:
vector<int> getRow(int rowIndex) {
//O(rowIndex) 空间 滚动数组
vector<vector<int>> res(2,vector<int> (rowIndex + 1));
for(int i=0;i <= rowIndex;i++){
res[i & 1][0] = res[i & 1][i] = 1;
for(int j=1;j<i;j++){
res[i & 1][j] = res[i - 1 & 1][j-1] + res[i - 1 & 1][j];
}
}
return res[rowIndex & 1];
}
};
评论区