【简单算法】47.帕斯卡三角形

题目:

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



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

示例:

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

解题思路:

s[m][n] = s[m-1][n-1] + s[m-1][n];

下一行的元素由上一行的元素两两相邻相加得到,最后再再两端加1即可。

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<int> row;
        vector<vector<int>> res(numRows,row);
        
        /**/
        for(int i = 0;i < numRows;++i){
            res[i].push_back(1);            
            for(int j = 1;j <= i-1;++j){
                res[i].push_back(res[i-1][j]+res[i-1][j-1]);
            }
            if(i > 0){
                res[i].push_back(1);
            }
            
        }
        
        return res;
        
    }
};
原文地址:https://www.cnblogs.com/mikemeng/p/9000299.html