列表

详情


NC246. 杨辉三角(二)

描述

给定一个非负索引值 num ,请返回杨辉三角中从上到下 num 层。索引值从 0 开始。
杨辉三角中,每个数是左上方和右上方的数之和。


数据范围:

例如当输入3时,对应的输出为[1,3,3,1],
杨辉三角的第3行(从0开始算起)部分如下图蓝色部分所示:

示例1

输入:

0

输出:

[1]

示例2

输入:

3

输出:

[1,3,3,1]

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 416KB, 提交时间: 2022-01-25

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型 
     * @return int整型vector
     */
    vector<int> getRow(int num)
    {
        // write code here
        vector<int> res;
        for(int i=0; i<num+1; ++i)
        {
            for(int j=0; j<i; ++j)
            {
                res[j] += res[j+1];
            }
            res.insert(res.begin(),1);
        }
        return res;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 308KB, 提交时间: 2022-02-09

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型 
     * @return int整型vector
     */
    vector<int> getRow(int num) {
        // write code here
        vector<vector<int>> dp;
        for(int i = 0; i <= num; i++) {
            vector<int> temp(i+1, 0);
            temp[0] = 1;
            temp[i] = 1;
            if(num == 0) dp.push_back(temp);
            else {
                for(int j = 1; j < i; j++) {
                    temp[j] = dp[i-1][j-1] + dp[i-1][j];
                }
                dp.push_back(temp);
            }
        }
        return dp[num];
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 308KB, 提交时间: 2022-01-25

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型 
     * @return int整型vector
     */
    vector<int> getRow(int num) {
        // write code here
        vector<int>res;
        for(int i=0;i<num+1;i++)
        {
            for(int j=0;j<i-1;j++)
            {
                res[j]+=res[j+1];
            }
            res.insert(res.begin(),1);
        }
        return res;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 320KB, 提交时间: 2022-03-29

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型 
     * @return int整型vector
     */
    vector<int> getRow(int x) {
        // write code here
        int num=x+1;
        vector<vector<int>> matrix(num,vector<int>(num));
        
        for(int i=0;i<num;i++)
        {
           matrix[i].resize(i+1);
        }
        for(int i=0;i<num;i++)
        {
            vector<int> line(i+1);
            for(int j=0;j<(i+1);j++)
            {
                if(j==0) line[j]=1;
                else if(j==i) line[j]=1;
                else line[j]=matrix[i-1][j-1]+matrix[i-1][j];
            }
            matrix[i]=line;
        }
        return matrix[num-1];
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 384KB, 提交时间: 2022-03-11

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型 
     * @return int整型vector
     */
    vector<int> getRow(int num) {
        // write code here
        vector<vector<int> > res(num+1,vector<int>(num+1));
        for(int i=0;i<num+1;i++){
            for(int j=0;j<i+1;j++){
                if(!j)res[i][j]=1;
                else res[i][j]=res[i-1][j-1]+res[i-1][j];
            }
        }
        for(int i=0;i<num+1;i++){
            res[i].resize(i+1);
        }
        return res[num];
    }
};

上一题