Pascal's Triangle

Given numRows, generate the first numRows of Pascal's triangle.

For example, given numRows = 5,
Return

[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

也是一体基本的DP题吧:
 1 class Solution {
 2 public:
 3     vector<vector<int>> generate(int numRows) {
 4         
 5         vector<vector<int>> vec;
 6         for (int i = 1; i < numRows + 1; ++i)
 7         {
 8             vec.push_back(vector<int>(i, 0));
 9         }
10         
11         for(int i = 0; i < numRows; ++i)
12         {
13             vec[i][0] = 1;
14             vec[i][i] = 1;
15         }
16         
17         for(int i = 1; i < numRows; ++i)
18         {
19             for(int j = 1; j < i; ++j)
20             {
21                 vec[i][j] = vec[i-1][j] + vec[i-1][j-1];
22             }
23         }
24         
25         return vec;
26     }
27 };

贴上一个更加简洁的方法:

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

 

posted @ 2018-03-21 21:41  还是说得清点吧  阅读(115)  评论(0编辑  收藏  举报