题目描述
【leetcode】118. 杨辉三角( Pascal’s Triangle )
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
第一次解答
思路:
vector<vector>里第一个vector是{1},
往后每添加一行,下一行下标i的元素都是其上一行下标i-1和i的元素和
若i-1或i越界,则对应元素值用0替代
注意:
numRows为0和1的情况
test case:
5
1
0
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> Pascal_triangle;
for(int i=0; i<numRows; ++i){
// 添加一行元素
Pascal_triangle.push_back(vector<int>(i+1, 1));
for(int j=1; j<i; ++j){
// 给每个元素赋值
int left = Pascal_triangle[i-1][j-1];
int right = Pascal_triangle[i-1][j];
Pascal_triangle[i][j] = left + right;
}
}
return Pascal_triangle;
}
};
结果: