C++题目联系

1定一个非负整数 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

答案如下:

#include 
using namespace std;
class Solution
{
public:
    vector> generate(int numRows)
    {
        if (numRows < 0)
        {
            return {};//当杨辉三角形的行数小于0时,返回空
        }
        if (numRows == 1)
        {
            return {{1}};//当杨辉三角形行数为1时,返回二维数组{{1}}
        }
        if (numRows == 2)
        {
            return {{1}, {1, 1}};//当杨辉三角形行数为2时,返回二维数组{{1}, {1, 1}}
        }
        vector> res = {{1}, {1, 1}};
        vector arr;//暂存每一行的列表
        int row = 1;//行指针
        while (row < numRows - 1)
        {
            arr.push_back(1);//杨辉三角形的起始和结束都是1
            for (int i = 0; i < res[row].size() - 1; i++)//通过上一行数组的size获得下一行i个需要累加
            {
                int temp = 0;
                temp = res[row][i] + res[row][i + 1];//
                arr.push_back(temp);
            }
            arr.push_back(1);
            res.push_back(arr);
            arr.clear();//向量清除
            row++;
        }
        return res;
    }
};

你可能感兴趣的:(C++习题练习,蓝桥杯,职场和发展)