class Solution {
public:
vector<int> getRow(int rowIndex) {
int bef,aft;
vector<int> newV=vector<int>(rowIndex+1);
vector<int> v=vector<int>(rowIndex+1);
v[0]=1;
newV[0]=1;
int i=0;
for(int row=1;row<=rowIndex;row++)
{
bef=0;
aft=1;
if(i==0)
{
for(;aft<row;bef++,aft++)
{
newV[aft]=v[bef]+v[aft];
}
newV[aft]=1;
i=1;
}
else
{
for(;aft<row;bef++,aft++)
{
v[aft]=newV[bef]+newV[aft];
}
v[aft]=1;
i=0;
}
}
if(rowIndex%2==0)
return v;
else
return newV;
}
};
空间复杂度O(K),只需要两层就可以完成计算,上下两层。可以画一个[2*rowIndex]的数组看一下。