Dynamic Programming | Pascal's Triangle
Given an integer numRows, return the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
Example 1: Input: numRows = 5 Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Example 2: Input: numRows = 1 Output: [[1]]
Constraints: 1<= numRows <= 30
Java Solution
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> allrows = new ArrayList<List<Integer>>();
ArrayList<Integer> row = new ArrayList<Integer>();
for(int i=0;i<numRows;i++) {
row.add(0, 1);
for(int j=1;j<row.size()-1;j++)
row.set(j, row.get(j)+row.get(j+1));
allrows.add(new ArrayList<Integer>(row));
}
return allrows;
}
}
C++ Solution
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector< int> L1;
vector<vector<int>> res;
if(numRows==0)
return res;
L1.push_back(1);
res.push_back(L1);
if(numRows==1)
return res;
vector< int>L2 ={1,1};
res.push_back(L2);
if(numRows==2)
return res;
for( int i=3;i<=numRows;i++){
L1.clear();
L1.push_back(1);
for(int j=1;j<L2.size();j++){
L1.push_back(L2[j-1]+L2[j]);
}
L1.push_back(1);
res.push_back(L1);
L2=L1;
}
return res;
}
};