leetcode 118 杨辉三角

118. 杨辉三角

难度简单432收藏分享切换为英文接收动态反馈

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

leetcode 118 杨辉三角

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

通过次数143,122提交次数205,315

解答:按照题意直接做就行,代码细节要处理一下。需要复习的知识点:vector的resize()函数,使用这个函数就需要理解容量和大小。直接转载别人的日志好了:

https://blog.csdn.net/amusi1994/article/details/81106455?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160932620416780257495528%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=160932620416780257495528&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-81106455.pc_search_result_cache&utm_term=vector%20resize%20%E5%87%BD%E6%95%B0

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int> >reti;   //要返回的值
        vector<vector<int>> res={
        {1},
        {1,1},
        {1,2,1},
        {1,3,3,1},
        {1,4,6,4,1},
        {1,5,10,10,5,1},
        {1,6,15,20,15,6,1},
        {1,7,21,35,35,21,7,1},};    //一开始是想多写几个值的,手算到7,不想写了
        if(numRows==0)
            return reti;
        if(numRows<=8)
        {
            res.resize(numRows);
            return res;
        }   
        else
        {
            vector<int> tmp;    //表示要返回的最后一行
            vector<int> tmp2;   //表示要添加的新行
            reti = generate(numRows-1); //递归调用
            tmp =reti.back();
            tmp2.push_back(1);
            for(int i=0;i<tmp.size()-1;i++)
            {
                tmp2.push_back(tmp[i]+tmp[i+1]);
            }
            tmp2.push_back(1);
            reti.push_back(tmp2);
            return reti;
        }
    }
};

不断学习,一直进步! 

 

上一篇:每日leetcode-数组-118. 杨辉三角


下一篇:Java第一行代码,常量和变量引入,java基础语法