杨辉三角的解法
要求返回前n行的楊輝三角所有值
點(diǎn)擊查看更多通信與專業(yè)知識(shí)
118. 楊輝三角
難度簡(jiǎn)單493
給定一個(gè)非負(fù)整數(shù)?numRows,生成楊輝三角的前?numRows?行。
在楊輝三角中,每個(gè)數(shù)是它左上方和右上方的數(shù)的和。
示例:
輸入: 5 輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ]按照定義直接寫(xiě)就行。每進(jìn)入下一行就重新增加一個(gè)對(duì)應(yīng)個(gè)數(shù)的數(shù)組,并將第一個(gè)和最后一個(gè)置為1,其余位res[n][i] = res[n-1][i-1] + res[n-1][i]。由于對(duì)稱,還可以對(duì)其進(jìn)行優(yōu)化。
?
// class Solution { // public: // vector<vector<int>> generate(int numRows) { // vector<vector<int>> res; // if(numRows == 0) return res; // for(int n = 0; n < numRows; n++){ // res.push_back(vector<int>(n+1)); // res[n][0] = res[n][n] = 1; // for(int i = 1; i <= n/2; i++){//可以只計(jì)算前一半 // res[n][n-i] = res[n][i] = res[n-1][i-1] + res[n-1][i]; // } // } // return res; // } // };class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> res;if(numRows == 0) return res;for(int n = 0; n < numRows; n++){res.push_back(vector<int>(n+1));res[n][0] = res[n][n] = 1;for(int i = 1; i < n; i++){//算整行的話就不能取到nres[n][i] = res[n-1][i-1] + res[n-1][i];}}return res;} };?
總結(jié)
- 上一篇: 快慢指针寻找循环节点
- 下一篇: vba代码编程800例_VBA编程常用过