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 };