34.数组-杨辉三角-Leetcode 118(python)

63 篇文章 0 订阅
63 篇文章 0 订阅
  • 题目描述

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

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

  • 示例

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

  • 解决思路

思路就是根据行数来不断产生当前行的一维数组,并把当前的一维数组添加到整个三角形的二维数组里。一开始我没有动手写,光在那想,就觉得难点在于怎么在每一行创建一个不定长的数组,怎么把这个数组加到二维数组里。其实都是数组操作里最基础的东西。

  • 代码
class Solution(object):
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        result = []
        for i in range(numRows):
            #在第i行创建长度为i+1的一维数组,因为数组计数从0开始
            now = [1] * (i+1)
            if i >= 2:
                #从当前行第2个元素遍历到第i-1个元素,因为每一行的头和尾都是1
                for j in range(1,i):
                    #当前行的第j个元素 = 前一行的第j个元素 + 前一行第j-1个元素 
                    now[j] = pre[j-1] + pre[j]
            #把表示当前行的一维数组now转换为二维数组,再加到总的二维数组result里边
            result += [now]
            #把当前行赋值给表示前一行的数组
            pre = now
                
        return result

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值