118.杨辉三角

题目来源:https://leetcode-cn.com/problems/pascals-triangle/

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

img

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

示例:

输入: 5

输出: [

​ [1],

​ [1,1],

[1,2,1],

[1,3,3,1],

[1,4,6,4,1]

]

解法

ii>2)行,第j1<j<i)列元素a[i][j]=a[i-1][j-1]+a[i-1][j]

C++代码如下:

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> res;
        for(int i=0;i<numRows;i++){
            vector<int> temp;
            temp.push_back(1);
            if(i!=0){
                for(int j=1;j<i;j++){
                    vector<int> prev = res.back();
                    temp.push_back(prev[j-1]+prev[j]);
                }
                temp.push_back(1);
            }
            temp.resize(i+1);
            res.push_back(temp);
        }
        return res;
    }
};

复杂度分析:

时间复杂度:O(numRows2)

空间复杂度:O(1)