Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return [1,3,3,1].
Note:
Could you optimize your algorithm to use only O(k) extra space?
Just follow the definition and generate row by row.
C++ Code:
/*
* func: generate_pascal_row
* goal: generate the specific row of pascal triangle
* @param rowIndex: input row number
* return: that row
*/
vector<int> generate_pascal_row(int rowIndex){
vector<int> row;
if(rowIndex < 0){
return row;
}
row.resize(rowIndex+2);
for(int i=0; i<rowIndex + 2; ++i){
row[i] = 0;
}
row[1] = 1;
for(int i=0; i<rowIndex; ++i){
for(int j = rowIndex+1; j > 0; j--){
row[j] = row[j-1] + row[j];
}
}
row.erase(row.begin());
return row;
}
Python Code:
# func: generate specific pascal row
# @param rowIndex: given row index
# @return: specific pascal row
def generate_pascal_row(rowIndex):
if rowIndex < 0:
return []
result = [0,1,0]
for _ in xrange(0, rowIndex):
result = [0] + [result[i] + result[i+1] for i in xrange(len(result)-1)] + [0]
print result
return result[1:-1]
Reference Link:
1. 水中的鱼: [LeetCode] Pascal's Triangle II 解题报告: http://fisherlei.blogspot.com/2012/12/leetcode-pascals-triangle-ii.html
No comments:
Post a Comment