LeetCode练习——其他(杨辉三角)

本文介绍了两种Python实现杨辉三角的方法,包括官方解法——利用杨辉三角的数学性质,以及直观易懂的取巧解法——通过错位相加。这两种解法分别详细解释,并提供了相关Python内置函数zip和列表相加的使用说明。同时,给出了力扣(LeetCode)上的题目链接供进一步学习。
摘要由CSDN通过智能技术生成

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
在这里插入图片描述

官方解法:杨辉三角的性质(数学方法)

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        ret = list()
        for i in range(numRows):
            row = list()
            for j in range(0, i + 1):
                if j == 0 or j == i:
                    row.append(1)
                else:
                    row.append(ret[i - 1][j] + ret[i - 1][j - 1])
            ret.append(row)
        return ret

取巧解法:错一位再逐个相加(直观好理解,但是不好想到。。)
在这里插入图片描述

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 0: return []
        res = [[1]]
        while len(res) < numRows:
            newRow = [a+b for a, b in zip([0]+res[-1], res[-1]+[0])]
            res.append(newRow)      
        return res

Python zip() 函数:https://www.runoob.com/python/python-func-zip.html
python列表相加的方法:两个list [] 加法:https://blog.csdn.net/weixin_42350212/article/details/80628539

力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xncfnv/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值