1. 程式人生 > >LeetCode118:楊輝三角

LeetCode118:楊輝三角

        解析:

        楊輝三角應該是比較熟悉的題目,可以看成是一個二維陣列,陣列的每一行元素個數比上一行多一個,每一行第一個元素和最後一個元素都是1,其餘元素,是它左上角元素和它上面的元素之和。用公式表示就是f[m][n]=f[m-1][n-1]+f[m-1][n],前提是m->=0,n-1>=0 ; 所以根據這個公式就可以很好計算了。

        用程式的話,就是需要一個vector儲存每一行的值,需要一個vector<vector<int>>儲存最終結果。

       程式碼:

vector<vector<int>> generate(int numRows) {
	vector<vector<int>> result;
	if (numRows == 0) return result;
	vector<int> tmp;//用來儲存每一行的值
	tmp.push_back(1);
	result.push_back(tmp);//先把第一行加入到結果中去
	if (numRows == 1) {//如果只有一行
		return result;
	}

	for (int i = 2; i <= numRows; i++) {
		vector<int> tmp(i, 1);
		for (int j = 1; j<i - 1; j++) {
			tmp[j] = result[i - 2][j - 1] + result[i - 2][j];//計算公式
		}
		result.push_back(tmp);
	}
	return result;
}