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
;
}
};