leetcode题----杨辉三角

文章介绍了杨辉三角的特点,包括每行首尾为1,当前值等于上一行当前列及左边列的和。通过Python代码展示了如何生成杨辉三角,并特别针对LeetCode的题目,给出了生成二维数组的解决方案。
摘要由CSDN通过智能技术生成

在这里插入图片描述

如下图,这是一个杨辉三角:
![在这里插入图片描述](https://img-blog.csdnimg.cn/617a20862af34157be720a56141391bf.png

首先,通过分析的出杨辉三角的特点:

  1. N行有N列
  2. 每行首尾都是1
  3. 当前值 = 上一行当前列的值 + 上一行当前列左边的值

思路就是,创建一个列表 nums = [1],然后循环输出N行,每次循环都在nums列表尾添一个0,就完成了第一个特点,如下:

nums = [1]
for i in range(10):
    print(nums)
    nums.append(0)

在这里插入图片描述
然后,就是特点三,当前值 = 上一行当前列的值 + 上一行当前列左边的值,一行代码就搞定了:

nums = [1]
for i in range(10):
    print(nums)
    nums.append(0)
    nums = [nums[j] + nums[j-1] for j in range(len(nums))]

在这里插入图片描述
反应不过来的,用笔捋一下就明白了

最后是leetcode题的答案,结果让你输出一个二维数组:

class Solution(object):
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        nums = [1]
        triangle = []
        for i in range(numRows):
            triangle.append(nums[:])
            nums.append(0)
            nums = [nums[j] + nums[j-1] for j in range(len(nums))] 
        return triangle

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值