Leetcode 118 根据行数输出杨辉三角形

来源:互联网 发布:天天向上网络版权费 编辑:程序博客网 时间:2024/05/21 06:13

题意:给定总行数numrows,输出所有行的 杨辉三角形

题解:

   0:1

            1:1    1

            2:1    2    1

            3:1    3    3    1

            4:1    4    6    4     1

            5:1    5   10   10   5      1

我们知道a[i][j]=a[i-1][j]+a[i-1][j-1],那么我们可以按照顺序设计一个vector<vector<int>> 相当于二维数组,依次将数据更新完。

代码:

class Solution {public:    vector<vector<int>> generate(int numRows) {        vector<vector<int>> r(numRows);        if(numRows == 0) return r;        r[0].push_back(1);        for(int i = 1; i < numRows; i ++)        {            r[i].push_back(1);            for(int j = 1; j < i; j ++)                r[i].push_back(r[i-1].at(j-1) + r[i-1].at(j));            r[i].push_back(1);        }          return r;    }};
也可以按照上一篇的思路:
class Solution {public:    vector<vector<int>> generate(int numRows) {        vector<int> vec(numRows, 1);    vector<vector<int>> vvec(numRows);        int i = 0, j = 0;    for (i = 1; i <= numRows;i++){    vvec[i-1]=(vector<int>(i));    }    for (i = 0; i < numRows; i++){    vvec[i][0] = 1;    }    if(numRows==0||numRows==1){            return vvec;           }    vvec[1][1] = 1;    for (i = 2; i < numRows; i++){    for (j = i; j>0; j--){    if (i == j || j == 0){    vec[j] = 1;    }    else{    vec[j] = vec[j] + vec[j - 1];    }    vvec[i][j] = vec[j];    }    }    return vvec;    }};



0 0
原创粉丝点击