• [LeetCode] 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]
    ]



    还是easy题适合我,略作思考以后基本第一次就能AC。凡是遇到这种有递推性质的题目,一般的思路就是自底向上一步一步推出来,推到输入限制时返回就行了,这里有几个pascale三角的性质需要注意一下:
    1.第n层有n个元素。
    2.除了首位各一个1以外,其n-2个元素都满足 c[n] = p[n-1]+p[n],其中c是当前层,p是上一层。
    3.第一层为{1}
    理解了这三个性质,再加上递推的思想就可以写出来了。
    void pascalIter(int i, int n, vector<vector<int>> &ret) {
        if (i > n) return;
        vector<int>r;
        r.push_back(1);
        vector<int> t = ret[i-2];
        for (int k = 0; k < i-2; k++) {
            r.push_back(t[k] + t[k+1]);
        }
        r.push_back(1);
        ret.push_back(r);
        pascalIter(i+1, n, ret);
    }
    
    vector<vector<int> > generate(int numRows) {
        vector<vector<int>> ret;
        if (numRows < 1) return ret;
        
        ret.push_back({1});
        if (numRows == 1) return ret;
        
        pascalIter(2, numRows, ret);
        return ret;
    }
     
  • 相关阅读:
    迷宫
    小猫
    数位DP模板
    摘桃子
    [USACO10HOL]牛的政治Cow Politics
    ArcEngine中合并断开的线要素(根据几何判断)
    ArcEngine环境下合并断开的线要素(根据属性)
    Web Service和WCF的到底有什么区别
    OGC 的 WMS、WFS 及WCS服务(转)
    ArrayList的使用方法详解(转)
  • 原文地址:https://www.cnblogs.com/agentgamer/p/4085894.html
Copyright © 2020-2023  润新知