leetcode

xiaoxiao2021-02-28  55

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
class Solution { public: vector<vector<int>> generate(int numRows) { vector<vector<int>> ans; for(int i = 0;i < numRows;i++) { vector<int> cur; if(i == 0) cur.push_back(1); else { for(int j = 0;j <= i;j++) { if(j == 0 || j == i) cur.push_back(1); else cur.push_back(ans[i - 1][j] + ans[i - 1][j - 1]); } } ans.push_back(cur); } return ans; } }; class Solution { public:    vector<vector<int> > generate(int numRows) {         vector<vector<int> >result;         if(numRows<=0)return result;         for(int row=0; row<numRows; row++)         {             vector<int> vals(row+1, 1);             for(int i=1; i<row; i++)             {                 vals[i]=result[row-1][i-1] + result[row-1][i];             }             result.push_back(vals);         }         return result;     } }; 此两种方法很相似,只不过第二种方法在初始化时把所有的值初始化为1,所以省去了很多的判断。
转载请注明原文地址: https://www.6miu.com/read-2049975.html

最新回复(0)