1,题目要求
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.
Example:
Input: 5
Output:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
给定非负整数numRows,生成Pascal三角形的第一个numRows。
2,题目思路
对于这道题,是求一个给定高度的帕斯卡三角(杨辉三角)。
问题本身不难,主要在于对三角的值的构造和计算上。
对于每一行,因为开头和结束的值都是1,因此,我们在计算时就应该讲它们拿出来单独处理,即每次遍历,从下标1开始遍历即可。
3,代码实现
int x = []() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
return 0;
}();
class Solution {
public:
vector<vector<int>> generate(int numRows) {
if(numRows == 0)
return {};
vector<vector<int>> res {{1}};
for(int i = 1;i<numRows;i++){
vector<int> tmp {1};
for(int j = 1;j<i;j++)
tmp.push_back(res[i-1][j-1]+res[i-1][j]);
tmp.push_back(1);
res.push_back(tmp);
}
return res;
}
};