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]
]
We can generate each row based on the definition, each element is the sum of the number above and to the left with the number above and to the right.
C++ Code:
/*
* func: generate_pascal_triangle
* goal: to generate input number of rows of pascal triangle
* @param numRows: numer of rows
* return: all rows
*/
vector<vector<int> > generate_pascal_triangle(int numRows){
vector<vector<int> > result;
if(numRows < 1){
return result;
}
vector<int> row(1, 1);
result.emplace_back(row);
for(int i=0; i<numRows-1; ++i){
vector<int> prev = result.back();
vector<int> curr;
for(int j = 0; j < prev.size()+1; ++j){
if(j == 0 || j == prev.size()){
curr.emplace_back(1);
}else{
curr.emplace_back(prev[j-1] + prev[j]);
}
}
result.emplace_back(curr);
}
return result;
}
Python Code:
# func: generate pascal triangle
# @param numRows: given number of rows
# @return: all rows generated
def generate_pascal_triangle(numRows):
if numRows < 1:
return []
result = [[1]]
for _ in xrange(1, numRows):
prev = [0] + result[-1] + [0]
curr = []
for i in xrange(len(prev)-1):
curr.append(prev[i] + prev[i+1])
result.append(curr)
return result
No comments:
Post a Comment