题目:
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?
思路:只用一个向量作为最终结果的存储空间即可,中间一直使用这个向量来更新。
//第k层的数
void PascaltriangleKth(int k)
{
vector<int> result(k,0);
int tmp1,tmp;
for(int i=0;i<k;i++)
{
for(int j=0;j<=i;j++)
{
if(j==0 || j==i)
{
tmp = 0;
tmp1 = 1;
result[j]=1;
}
else
{
tmp = result[j];
result[j] += tmp1;
tmp1 = tmp;
}
}
}
for(int j=0;j<result.size();j++)
cout<<result[j]<<" ";
cout<<endl;
}
需要使用两个变量来记录先前的两个值
vector<int> Trigangle(int k)
{
int i,j;
vector<int> vec(k,1);
int pre,next;
for(i=1;i<=k;i++)
{
pre = vec[0];
next = vec[1];
for(j=1;j<i-1;j++)
{
vec[j] = pre+next;
pre = next;
next = vec[j+1];
}
}
return vec;
}