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?
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> res(rowIndex + 1, 1);
for(int i = 2; i <= rowIndex; i++)
{
vector<int> tmp(res);
for(int j = 1; j < i; j++)
tmp[j] = res[j] + res[j-1];
res = tmp;
}
return res;
}
};
better one:
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> res(rowIndex + 1);
res[0] = 1;
for(int i = 1; i <= rowIndex; i++)
{
for(int j = i; j >= 0; j--)
{
if(j == i)
res[j] = res[j-1];
else if(j > 0)
res[j] = res[j] + res[j-1];
}
}
return res;
}
};