题目:
Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle.
In Pascal’s triangle, each number is the sum of the two numbers directly above it.
思路:
提前分配好Pascal’s Triangle所需要的所有空间,然后逐行求解就可以了。比较简单,submit一次就过。
代码实现:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> triangle;
for (int i = 1; i <= numRows; ++i){
vector<int> t(i,1);
triangle.push_back(t);
}
for (int i = 3; i <= numRows; ++i){
for (int j = 1; j < i-1; ++j){
triangle[i-1][j] = triangle[i-2][j-1] + triangle[i-2][j];
}
}
return triangle;
}
};
discuss:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> rows;
vector<int> row;
for (int i = 0; i < numRows; ++i){
row.insert(row.begin(), 1);
for (int j = 1; j < row.size() - 1; ++j){
row[j] += row[j+1]; // 实际上就是后面的数字加到前面,然后再在最前面添上数字1,就形成了新的一行
}
rows.push_back(row);
}
return rows;
}
};