Pascal’s Triangle
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] ]tag: array
没什么算法技巧,了解帕斯卡三角的计算公式就好。不过也算是动态规划的一种吧。
1. A[i][j] = A[i – 1][j – 1] + A[i – 1][j]
2. A[i][1] = A[i][end] = 1
线性时间复杂度,常数空间复杂度。
class Solution {
public:
vector<vector<int> > generate(int numRows) {
vector<vector<int>> re;
if(numRows == 0){
return re;
}
//first row
vector <int> firstRow(1, 1);// row(count, value)
re.push_back(firstRow);
for(int i = 1; i < numRows; i++){
vector<int> row;
row.push_back(1);//first column
for(int j = 1;j <= i; j++){
if(j == i){//last column
row.push_back(1);
}
else{
row.push_back(re[i - 1][j] + re[i - 1][j - 1]);
}
}
re.push_back(row);
}
return re;
}
};
