原题链接如下:
118. 杨辉三角
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
输入: numRows = 1
输出: [[1]]
提示:
1 <= numRows <= 30
题解1:
vector<vector<int>> ans(m);表示创建一个有m个元素的二维的vector数组,每个元素都是一个一维的vector数组,总共有m个
c++使用vector创建二维数组的方法_Mocode的博客-CSDN博客_c++vector创建二维数组
class Solution {
public:
vector<vector<int>> generate(int numRows) {
//创建一个二维但是不规则的vector容器
vector<vector<int>> ans(numRows);
for(int i=0;i<numRows;i++){
ans[i].resize(i+1);//用resize来给每一行的vector容器扩容
ans[i][0] = ans[i][i] =1;//将每一行的头和尾赋值为1
for(int j=1;j<i;j++){
ans[i][j] = ans[i-1][j-1]+ans[i-1][j];
}
}
return ans;
}
};
该题解用到的一个关键就是此时二维的vector数组创建的并不是规则的正方形的矩阵,每一行都相当于一个一维的vector数组,但是每一行的这个vector数组的元素个数都不一样,是和行数有关的,于是我们就想到了对每一行的vector都采用resize函数给它重新设置容量
版权声明:本文为m0_51691373原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。