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

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

示例 1:

输入: numRows = 5

输出:

[[1],

[1,1],

[1,2,1],

[1,3,3,1],

[1,4,6,4,1]]

示例 2:

输入: numRows = 1

输出: [[1]]

 解题思路:

这里解释一下vector<vector<int>>

先看一下vector<int>

vector<vector<int>>

大家可以对比理解一下 vector<int>和vector<vector<int>>

使用vector<vector<int>>, 申请一个二维数组的空间

理解了vector<vector<int>>之后,这题就非常简单

class Solution {
public:
    vector<vector<int>> generate(int numRows) 
    {
        //申请行的数量
        vector<vector<int>> vv(numRows);

        for(size_t i = 0; i < numRows;  i++)
        {
            //给vector<int>,申请空间,可以理解为申请数组的列
            vv[i].resize(i + 1, 0);
            //给每列申请的空间赋值
            vv[i][0] = vv[i][i] = 1;
        }

        for(size_t i = 2; i < numRows; i++)
        {
            for(size_t j = 1; j < i; j++)
            {
                //因为是杨辉三角,所以跳过第一,二行和第一列
                vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];
            }
        }

        return vv;
    }
};

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部