zoukankan      html  css  js  c++  java
  • 【Leetcode】【Easy】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]
    ]

    解题思路1:迭代插入(未通过)

    [              [               [                      [
         [1],           [1],            [1],                   [1],
        [1],           [1,1],          [1,1],                 [1,1]
       [1],   ==>     [1,2],  ==>     [1,2,1], ==>...==>     [1,2,1],
      [1],           [1,3],          [1,3,3],               [1,3,3,1],
     [1]            [1,4]           [1,4,6],               [1,4,6,4,1],
    ]              [               [                      [

    可以推导出每一列的递推公式:

    第一列从第一行开始:1                                                                            

    第二列从第二行开始:j / 1,  j∈[1,n)

    第三列从第三行开始:[j*(j-1)] / [1*2], j∈[2,n)

    ...

    第M列从第M行开始:[j*(j-1)*...*(j-m+2)] / [1*2*...*m-1], j∈[m,n)

    但是程序未能实现,在输入numRows=8时,出现Runtime Error错误。

    【★】解题思路2:

    用f(n)(m)表示第n行第m个元素,n从1开始,1≤m≤n;

    则f()(1)=f()(n)=1, f(n)(m)=f(n-1)(m-1) + f(n-1)(m);

    核心代码只有四步:

    ①新建符合的空间;

    ②将首尾置为1;

    ③遍历除首尾外的元素空间,利用公式填充;

    ④将填充好的列表放入结果队列里;

     1 class Solution {
     2 public:
     3     vector<vector<int> > generate(int numRows) {
     4         vector<vector<int> > rowslst;
     5         
     6         if (numRows == 0)
     7             return rowslst;
     8         
     9         for (int i=0; i<numRows; ++i) {
    10             vector<int> row(i+1); 
    11             row[0] = row[i] = 1;
    12             
    13             for(int j=1; j<i; ++j) {
    14                 row[j] = rowslst[i-1][j-1] + rowslst[i-1][j];
    15             }
    16             
    17             rowslst.push_back(row);
    18         }
    19         
    20         return rowslst;
    21     }
    22 };

    附录:

    杨辉三角与计算机

  • 相关阅读:
    14. D3D光照
    17. 增加对硬件光照的支持
    ECommerce Starter Kit 数据库表和存储过程一览
    使用 DataAdapter 执行批量更新
    学习Professional ASP.NET 2.0(四)
    c#泛型学习(二)
    学习Professional ASP.NET 2.0(一)
    学习Professional ASP.NET 2.0(二)
    下载:微软网页设计工具CTP测试版(支持asp.net2.0)
    学习ECommerce Starter Kit (1)
  • 原文地址:https://www.cnblogs.com/huxiao-tee/p/4133045.html
Copyright © 2011-2022 走看看