Given numRows, generate the first numRows of Pascal‘s triangle.
For example, given numRows = 5, (Easy)
Return
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
分析:
求解杨辉三角形,按照其定义以此求解即可,注意优化写法使其能够更简洁(比如对于二维数组每一行的个数其实是已知的,所以可以先push_back一个长度的数组,后面直接用下标访问),即第二种写法的代码。
代码:
1 class Solution { 2 public: 3 vector<vector<int>> generate(int numRows) { 4 vector<vector<int>> result; 5 if (numRows == 0) { 6 return result; 7 } 8 vector<int> oldVec{1}; 9 result.push_back(oldVec); 10 for (int i = 2; i <= numRows; ++i) { 11 vector<int> newVec; 12 for (int j = 0; j < i; ++j) { 13 int temp; 14 if (j > 0 && j < oldVec.size()) { 15 temp = oldVec[j] + oldVec[j - 1]; 16 } 17 else if (j > 0){ 18 temp = oldVec[j - 1]; 19 } 20 else { 21 temp = oldVec[0]; 22 } 23 newVec.push_back(temp); 24 } 25 result.push_back(newVec); 26 oldVec = newVec; 27 } 28 return result; 29 } 30 };
1 class Solution { 2 public: 3 vector<vector<int>> generate(int numRows) { 4 vector<vector<int>> result; 5 if (numRows == 0) { 6 return result; 7 } 8 vector<int> init{1}; 9 result.push_back(init); 10 for (int i = 2; i <= numRows; ++i) { 11 result.push_back(vector<int>(i,1)); 12 for (int j = 1; j < i - 1; ++j) { 13 result[i - 1][j] = result[i - 2][j] + result[i - 2][j - 1]; 14 } 15 } 16 return result; 17 } 18 };
LeetCode118 Pascal's Triangle
时间: 2024-10-10 03:34:28