zoukankan      html  css  js  c++  java
  • 118. 杨辉三角

    <递归>

    题目描述


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

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

    示例:

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

    我的思路 - 递归


    class Solution:
        def generate(self, numRows: int) :
            def resolve(row,base):
                
                if row>=numRows:
                    return base
                layer = [1]+[base[-1][i]+base[-1][i+1] for i in range(len(base[-1])-1)]+[1]
                base.append(layer)
                return resolve(row+1,base)
                    
            ret = [[1],[1,1]]
            if numRows<=2:
                return ret[:numRows-1]
            return resolve(2,ret)
    • 算法:

      • 每次递归把整个杨辉三角代进去
      • 根据最后一行来推出下一行,并加入结果中
      • 递归结果
    • 需要优化的地方

      • 每次递归都会代入整个杨辉三角

     

  • 相关阅读:
    第三章函数
    基本数据类型
    gulp压缩js
    read/load
    jQuery的类数组对象结构
    立即调用表达式
    npm
    cocos2d.js
    图片上传后压缩 Thinkphp
    判断用户是否在微信中
  • 原文地址:https://www.cnblogs.com/remly/p/12736780.html
Copyright © 2011-2022 走看看