其他分享
首页 > 其他分享> > 杨辉三角浅解

杨辉三角浅解

作者:互联网

 

1。

class Solution {

public:

    vector<vector<int>> generate(int numRows) {

        vector<vector<int>> tangle;

        vector<int> a;

        a.push_back(1);

        tangle.push_back(a);

        if(numRows==1){

            return tangle;

        }

        else{

            vector<int> b;

            b.push_back(1);

            b.push_back(1);

            tangle.push_back(b);

            for(int j=2;j<numRows;j++){

                vector<int> c;

                for(int k=0;k<j;k++){

                    if(k==0){

                        c.push_back(1);

                    }

                    else if(k==j-1){

                        c.push_back(1);

                    }

                    else{

                        c[k]=tangle[numRows-2][k-1]+tangle[numRows-2][k];

                        

                    }

                }

                tangle.push_back(c);

            }

            return tangle;

        }

    }

};

2.我们先创造一个numrows行numrows列的二维vector数组;

我们一行一行的遍历并且在遍历时对每一行进行resize()操作,将其变为杨辉三角的形式

我们发现每一行的第一个数与最后一个数是相等的;所以我们直接赋值,而中间的数则是与前一行有关。

class Solution {

public:

    vector<vector<int>> generate(int numRows) {

        vector<vector<int>> tangle(numRows);

        for(int i=0;i<numRows;i++){

            tangle[i].resize(i+1);

            tangle[i][0]=tangle[i][i]=1;

            for(int j=1;j<i;j++){

                tangle[i][j]=tangle[i-1][j-1]+tangle[i-1][j];

            }

        }

    return tangle;

    }

};

标签:int,back,浅解,numRows,push,vector,杨辉三角,tangle
来源: https://blog.csdn.net/weixin_49111956/article/details/123215960