一、题目介绍
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
二、解题思路
(1)分析题目特点,即每一行的首尾元素均为1。
(2)每一行除了首尾元素之外,其他元素等于上一行中相同位置的元素和前一个位置的元素之和。
三、解题代码
vector<vector<int>> generate(int numRows) {
int i = 1;
vector<vector<int>> vec;
while(i <= numRows)
{
vector<int> vtmp;
for(int j = 0; j < i; ++j)
{
if(j == 0 || j == i-1)
vtmp.push_back(1);
else
{
vtmp.push_back(vec[i-2][j-1]+vec[i-2][j]);
}
}
++i;
vec.push_back(vtmp);
}
return vec;
}