杨辉三角浅解

杨辉三角浅解

 

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;

    }

};

上一篇:Polybase要求安装orcale jre 7更新 51或更高版本如何解决


下一篇:update受影响行数返回0的几种情况