LeetCode 118.杨辉三角

原题链接如下:
118. 杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

img

示例 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版权协议,转载请附上原文出处链接和本声明。