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]]
Approach: Constructed the tree iteratively in the most efficient way
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> pascals_triangle;
vector<int> current_level;
if(numRows >= 1){
current_level.push_back(1);
pascals_triangle.push_back(current_level);
}
if(numRows >= 2){
current_level.push_back(1);
pascals_triangle.push_back(current_level);
}
for(int i = 3; i<=numRows; i++){
current_level.clear();
current_level.push_back(1);
for(int j = 0; j<i-2; j++){
current_level.push_back(pascals_triangle[i-2][j]+pascals_triangle[i-2][j+1]);
}
current_level.push_back(1);
pascals_triangle.push_back(current_level);
}
return pascals_triangle;
}
};