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

題目地址: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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章