118.杨辉三角(简单)- LeetCode

news/2024/7/5 21:36:52 标签: leetcode, 动态规划, 算法

题目描述

在这里插入图片描述

自己解法

运用动态规划思想,当前层下标0、-1的元素值为1,下标从1len(res)-1的元素中,若下标为i,其值等于上一层下标[i]、[i-1]的元素之和,Python实现:

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if not numRows:
            return []
        else:
            ans = []
            for i in range(numRows):
                res = [1] * (i+1)
                if i > 1:
                    for j in range(1,len(res)-1):
                        res[j] = ans[i-1][j-1] + ans[i-1][j]
                ans.append(res)
            return ans

在这里插入图片描述

官方解法

官方解法的思路跟我一样,也差不多:

class Solution:
    def generate(self, num_rows):
        triangle = []

        for row_num in range(num_rows):
            # The first and last row elements are always 1.
            row = [None for _ in range(row_num+1)]
            row[0], row[-1] = 1, 1

            # Each triangle element is equal to the sum of the elements
            # above-and-to-the-left and above-and-to-the-right.
            for j in range(1, len(row)-1):
                row[j] = triangle[row_num-1][j-1] + triangle[row_num-1][j]

            triangle.append(row)

        return triangle

题解区

题解区大佬发现发现当前一行只比上一行多了一个元素,最最关键的一点:本行元素等于上一行元素往后错一位再逐个相加,具体参考:
取巧解法

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

http://www.niftyadmin.cn/n/1701540.html

相关文章

QucikTest 测试对象的深入剖析

通过前面系列有关QuickTest博文的介绍及操作&#xff0c;已经对QuickTest有了一定的了解&#xff0c;本篇博文就通过实例图文并茂的对QuickTest下的对象进行深入的了解与剖析。1. QuickTest工作原理通过前面陆续blog文章中有关QuickTest文章中的学习&#xff0c;了解到 QuickT…

安装nodejs 后运行 npm 命令无响应处理方法

安装和卸载过nodejs&#xff0c; 也编辑过 C:\Users\{账户}\下的.npmrc文件。 再全新安装nodejs &#xff0c;运行npm 命令&#xff0c;无响应。 处理方法&#xff0c;删除C:\Users\{账户}\下的.npmrc文件 再运行npm 命令&#xff0c;正常转载于:https://www.cnblogs.com/testw…

1266.访问所有点的最小时间(简单)- LeetCode

题目描述 自己解法 由题目可知&#xff0c;所要输出的是经过所有点的时间&#xff0c;所以路径方向并不是最关键的&#xff0c;最短时间应该是&#xff1a;两个相邻点x坐标之差的绝对值、y坐标之差的绝对值中较大的一方&#xff0c;Python代码实现&#xff1a; class Solutio…

graph image segment

http://cs.brown.edu/~pff/segment/ 转载于:https://www.cnblogs.com/guochen/p/6226558.html

Python - zip()函数

zip() 函数用于将可迭代的对象作为参数&#xff0c;将对象中对应的元素打包成一个个元组&#xff0c;然后返回由这些元组组成的对象&#xff0c;这样做的好处是节约了不少的内存。我们可以使用 list() 转换来输出列表。如果各个迭代器的元素个数不一致&#xff0c;则返回列表长…

busybox的编译、使用及安装

转载于&#xff1a;http://blog.sina.com.cn/wyw1976 busybox是什么&#xff1f; &#xff08;1&#xff09;busybox是Linux上的一个应用程序(application)&#xff0c;即只有一个ELF文件头。 &#xff08;2&#xff09;它整合了许多Linux上常用的工具和命令&#xff08;utilit…

sql语句联接

联接&#xff1a;通过连接运算符实现同时查询多张表。1.内联接&#xff1a;join on只显示有关联的数据(只返回符合条件的table1和table2的列)2.外连接A、left join&#xff1a;左外连接&#xff09;&#xff1a;结果集既包括连接表的匹配行&#xff0c;也包括左连接表的所有行…

1010. 总持续时间可被 60 整除的歌曲(简单)- LeetCode

题目描述 自己解法 思路&#xff1a;本问题中&#xff0c;我们不关心数组的值&#xff0c;只关心满足条件的次数&#xff0c;所以可以对原数组进行修改。需要意识到的一个规律是&#xff1a;如果两个数a,ba,ba,b相加能被60整除&#xff0c;那么(a%60) (b%60) 60&#xff0c;…