【LeetCode】118和119.杨辉三角

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bqw18744018044/article/details/88999393
  • 118题:杨辉三角

  1. 题目描述

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

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

  2. 思路

    直接模拟三角生成的过程即可。

  3. C++实现
    vector<vector<int>> generate(int numRows) {
            vector<vector<int>> res;
            if(numRows==0)return res;
            for(int i=0;i<numRows;i++){
                vector<int> curRow;
                for(int j=0;j<=i;j++){
                    if(j==0||j==i)
                        curRow.push_back(1);
                    else{
                        curRow.push_back(res[i-1][j-1]+res[i-1][j]);
                    }
                }
                res.push_back(curRow);
            }
            return res;
        }
    
  • 119题:杨辉三角II
  1. 题目描述

    给定一个非负整数k,返回杨辉三角的第k行;

  2. 思路

    因为不需要生成全部的杨辉三角,因此为了节省空间直接申请一个大小为k+1的数组(第k行有k+1个元素);然后在生成每行的值时,我们采用由后向前的方式来生成。

  3. C++实现
    class Solution {
    public:
        vector<int> getRow(int rowIndex) {
            vector<int> res(rowIndex+1);
            res[0] = 1;
            for(int i=1;i<=rowIndex;i++){
                for(int j=i;j>=1;j--){
                    res[j] += res[j-1];
                }
            }
            return res;
        }
    };
    

 

猜你喜欢

转载自blog.csdn.net/bqw18744018044/article/details/88999393