原题地址(简单)

方法1—直接法

思路

直接根据题意做。

代码

  1. class Solution {
  2. public:
  3. vector<vector<int>> generate(int numRows) {
  4. vector<vector<int>> ans;
  5. if(numRows >= 1) ans.push_back({1});
  6. if(numRows >= 2) ans.push_back({1,1});
  7. for(int i=2; i<numRows; i++) {
  8. vector<int> tmp, v = ans[i-1];
  9. tmp.push_back(1);
  10. for(int j=0; j<v.size()-1; j++) {
  11. tmp.push_back(v[j] + v[j+1]);
  12. }
  13. tmp.push_back(1);
  14. ans.push_back(tmp);
  15. }
  16. return ans;
  17. }
  18. };

代码写的不好,官方的写的很简洁, 官方代码如下:

  1. class Solution {
  2. public:
  3. vector<vector<int>> generate(int numRows) {
  4. vector<vector<int>> ans(numRows);
  5. for(int i=0; i<numRows; i++) {
  6. ans[i].resize(i+1);
  7. ans[i][0] = ans[i][i] = 1;
  8. for(int j=1; j<i; j++) {
  9. ans[i][j] = ans[i-1][j-1] + ans[i-1][j];
  10. }
  11. }
  12. return ans;
  13. }
  14. };