编程语言
首页 > 编程语言> > 经典算法:杨辉三角

经典算法:杨辉三角

作者:互联网

这算然是个等边三角形,但是我们可以想像成为一个直角三角形,如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
不难发现,除了第一列和diagonal,其实每个数字都是上一行的上面一个与前面一个数字的和。
也就是ans[i-1][j-1]+ans[i-1][j]
所以我们可以利用这个关系来写出代码。

ans[i-1]为上面一行,这个比较好理解。
我们初始化temp的值为1,这样diagonal和第一列都有了初始化值
我们只需要以以上的关系去将中间的部分设值就好了

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> ans;
        for(int i = 0; i < numRows; ++i){
            vector<int> temp(i+1, 1);
            for(int j = 1; j < i; ++j) 
            	temp[j] = ans[i-1][j-1]+ans[i-1][j];
            ans.push_back(temp);
        }
        return ans;
    }
};

等我考完试来介绍一下他的进阶版

标签:temp,int,经典,diagonal,numRows,算法,vector,ans,杨辉三角
来源: https://blog.csdn.net/qq_48322523/article/details/115263334