题目描述:
给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
方法一:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> yang(numRows); //二维vector的初始化方式,yang有numRows行
for(int i=1 ; i<=numRows ; i++) //i表示第i行
{
for(int j=0 ; j<i ; j++) //对每行添加元素
{
if(j==0 || j==i-1) //每行的首位元素和最后一位元素必定是1
{
yang[i-1].push_back(1);
}
else
{
int x = yang[i-2][j-1] + yang[i-2][j];
yang[i-1].push_back(x); //其余元素等于左上角和右上角的元素之和
}
}
}
return yang;
}
};
时间复杂度:O(numRows2)。
空间复杂度:O(1)。