leetcode 118

来源:互联网 发布:union c语言应用实例 编辑:程序博客网 时间:2024/04/30 11:04

题目:

    解:

先考虑numRows小于3的情况(非常简单,直接赋值),再考虑numRows大于3的情况(每次循环记录上一次行的vector),然后根据相应的规则相加得到最新一行的vector,同时把最新的一行的vector赋给上一行即可,循环到numRows结束.

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


0 0
原创粉丝点击