题目:
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return [1,3,3,1]
.
Note:
Could you optimize your algorithm to use only O(k) extra space?
思路:
自己还是蛮笨的,题目说只用O(k)的空间复杂度,我就真用了那么多的时间复杂度。实际上,O(1)的额外空间复杂度足矣!需要注意的是第二层的循环次序,必须是从后向前才行。
代码:
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> ret(rowIndex + 1, 1);
for(int i = 2; i <= rowIndex; i++) {
for (int j = i - 1; j >= 1; --j) {
ret[j] = ret[j] + ret[j-1];
}
}
return ret;
}
};