Pascal's Triangle II
Oct 29 '12
461 / 1118
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?
public class Solution {
public List<Integer> getRow(int rowIndex) {
List<Integer> res = new ArrayList<Integer>(rowIndex);
if(rowIndex<0) return res;
for(int i=0; i<=rowIndex; i++) {
res.add(1);
for(int j=i-1;j>0; j--) {
res.set(j, res.get(j-1)+res.get(j));
}
}
return res;
}
}
class Solution {
public:
vector<int> getRow(int rowIndex) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
//kth k+1 length [1,3,3,1]
//assert(rowIndex>0);
vector<int>* pre = new vector<int>(rowIndex+1);
vector<int>* cur = new vector<int>(rowIndex+1);
for(int i=0; i<=rowIndex; i++) {
for(int j=0; j<=i; j++) {
if(j==0 || j==i) (*cur)[j] = 1;
else {
(*cur)[j] = (*pre)[j-1] + (*pre)[j];
}
}
swap(pre,cur);
}
delete cur;
return *pre;
}
};