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] ]http://oj.leetcode.com/problems/pascals-triangle/
Solution:
We find that ith row has i numbers. And except the start and end number, t[i][j] = t[i-1][j-1] + t[i-1][j]. So it is a simple one dimension dp problem.
https://github.com/starcroce/leetcode/blob/master/pascal_triangle.cpp
// 4 ms for 15 test cases
class Solution {
public:
vector<vector<int> > generate(int numRows) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
vector<vector<int> > ans;
if(numRows == 0) {
return ans;
}
// 1st level
ans.push_back(vector<int> (1, 1));
for(int i = 2; i <= numRows; i++) {
vector<int> level (i, 1);
// last level
vector<int> &last = ans[i-2];
for(int j = 1; j < i-1; j++) {
level[j] = last[j-1] + last[j];
}
ans.push_back(level);
}
return ans;
}
};