Given an integer
rowIndex
, return therowIndexth
(0-indexed) row of the Pascal's triangle.Input: rowIndex = 3 Output: [1,3,3,1]Input: rowIndex = 0 Output: [1]
The challenge of this question is to use O(rowIndex) memory to finish the question.
From the normal Pascal's triangle question, we know dp[i][j] depends on dp[i - 1][j - 1] and dp[i - 1][j + 1]. Is there any method to reduce a dimension?
It is pretty obvious that i's level only depends on i - 1's level, this definitely can be reduced.
However, we need to loop reversely to avoid the new information affecting the old information.
class Solution {
public:
vector<int> getRow(int n) {
vector<int> res(n + 1);
for(int i = 0; i <= n; i++){
res[0] = res[i] = 1;
for(int j = i - 1; j >= 1; j--){
res[j] = res[j] + res[j - 1];
}
}
return res;
}
};