加载中...
118-杨辉三角(Pascal's Triangle)
发表于:2021-12-03 | 分类: 简单
字数统计: 165 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/pascals-triangle

英文原文

Given an integer numRows, return the first numRows of Pascal's triangle.

In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:

 

Example 1:

Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

Example 2:

Input: numRows = 1
Output: [[1]]

 

Constraints:

  • 1 <= numRows <= 30

中文题目

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

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

 

示例 1:

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

示例 2:

输入: numRows = 1
输出: [[1]]

 

提示:

  • 1 <= numRows <= 30

通过代码

高赞题解

解题思路

观察一下规律,发现当前一行只比上一行多了一个元素,最最关键的一点:本行元素等于上一行元素往后错一位再逐个相加:

微信图片_20191211113539.jpg{:width=”300px”}{:align=”center”}

因此我们只要对最后一行单独处理:最后一行首、尾分别添加一个零然后对应位置求和就可以得到新的一行,思路上比较清晰,占用的时间、空间复杂度也都还挺好<(▰˘◡˘▰)

代码

[]
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

统计信息

通过次数 提交次数 AC比率
237744 323212 73.6%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
杨辉三角 II 简单
上一篇:
117-填充每个节点的下一个右侧节点指针 II(Populating Next Right Pointers in Each Node II)
下一篇:
119-杨辉三角 II(Pascal's Triangle II)
本文目录
本文目录