[Leetcode]Pascal's Triangle

来源:互联网 发布:网络改造 编辑:程序博客网 时间:2024/06/18 12:14

题目:

Pascal's Triangle


Given numRows, generate the first numRows of Pascal's triangle.

For example, given numRows = 5,
Return

[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1,4,6,4,1]]


来源:https://oj.leetcode.com/problems/pascals-triangle/


思路:

很基本的杨辉三角

C++ AC代码:

class Solution {public:    vector<vector<int> > generate(int numRows) {        vector<vector<int> > result;         if(numRows <= 0)            return result;           vector<int> tmp,nowrow;        nowrow.push_back(1);        result.push_back(nowrow);        for(int i=1;i<numRows;i++)     //第二行起        {            tmp.clear();            tmp.push_back(1);          //每行的头数字                        for(int j=1;j<i;j++)                tmp.push_back(nowrow[j-1] + nowrow[j]);   //每行中间的数字                        tmp.push_back(1);         //每行的尾数字            nowrow = tmp;            result.push_back(nowrow);        }        return result;    }};


运行时间 32ms

另一种方法:
class Solution {public:    vector<vector<int> > generate(int numRows) {        vector<vector<int> > result;         if(numRows <= 0)            return result;           vector<int> tmp;        tmp.push_back(1);        result.push_back(tmp);if(numRows == 1)            return result;tmp.clear();          tmp.push_back(1);          tmp.push_back(1);          result.push_back(tmp);          if(numRows==2)              return result;          for(int i=2;i<numRows;i++)        {            tmp.clear();            tmp.push_back(1);           //每行的头数字                        for(int j=1;j<i;j++)                tmp.push_back(result[i-1][j-1] + result[i-1][j]);   //每行中间的数字                        tmp.push_back(1);         //每行的尾数字                        result.push_back(tmp);        }        return result;    }};

运行时间4ms

最近忙着实习,一直没空做LeetCode。看来周末一定要得抽时间做了,要不然到时又白瞎了。。。

0 0
原创粉丝点击