leetcode 杨辉三角 II

题目描述:

给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 行。

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

示例:

输入: 3
输出: [1,3,3,1]

解题思路:

观察发现。二维数组的值可分为两种情况:边界值为1,中间值 由左上加上右上。题目k的取值范围[0,33], 所以先求出行数为k+1的二维矩阵,即[0, 1, 2, ..., k] ,再返回第k行即可。

C++代码:

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<vector<int>> YangAngle(rowIndex+1);
        
        for (int i = 0; i < rowIndex+1; i++){
            YangAngle[i].resize(i+1); // 定义每行的大小
            YangAngle[i][0] = 1; // 前面边界
            YangAngle[i][i] = 1; // 后面
        }
        
        for (int i = 2; i < rowIndex+1; i++)
            for (int j = 1; j < YangAngle[i].size()-1; j++){
                YangAngle[i][j] = YangAngle[i-1][j-1] + YangAngle[i-1][j];
            }
        
        vector<int> temp = YangAngle[rowIndex];
        return temp;
    }
};

执行用时: 0 ms, 在Pascal's Triangle II的C++提交中击败了100.00% 的用户

猜你喜欢

转载自blog.csdn.net/jizhidexiaoming/article/details/84839763