您的位置:首页 > 其它

LeetCode(Oct 29 '12):Pascal's Triangle II

2013-07-02 10:42 260 查看
题目地址:http://leetcode.com/onlinejudge#question_119

题目要求:



分析:要求在O(n)的空间内获得第k+1行的帕斯卡尔三角形的值。

假设三角形存在二维数组Data中,其组织形式如下:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

有以下特征:

Data[i][0]和Data[i][i]的值均为1

Data[i][m]=Data[i-1][m-1]+Data[i-1][m]

观察以上规律,发现在一维数组中,逆向求解,不会破坏后续计算所需要的数值。

代码如下:

class Solution {
public:
vector<int> getRow(int rowIndex) {
rowIndex++;
vector<int> tmp;
if(rowIndex==0) return tmp;
tmp.assign(rowIndex,0);
tmp[0]=1;
for(int i=2;i<=rowIndex;i++)
{
for(int n=i;n>=2;n--)
{
if(n==i)
{
tmp[n-1]=1;
continue;
}
tmp[n-1]=tmp[n-1]+tmp[n-2];
}

}
return tmp;
}
};


另外尝试用了一下流迭代器输出vector的元素,

要注意迭代器的type和vector的type匹配

代码如下:

ostream_iterator<int> output(cout," ");
copy(tmp.begin(),tmp.end(),output);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: