08_杨辉三角

· 浏览次数 : 0

小编点评

```python class Solution: def generate(self, numRows: int) -> List[List[int]]: # Initialize dynamic programming array dp = [[1] for _ in range(1, numRows + 1)] for _ in range(1, numRows + 1)] # Iterate through each row for i in range(1, numRows + 1): # Initialize first and last elements to 1 dp[i][0] = dp[i][i] = 1 # Calculate middle elements by summing the adjacent elements for j in range(1, i): dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j] # Convert dynamic programming array to list of lists result = [row for row in dp for _ in row] return result ```

正文

118. 杨辉三角

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

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

img

示例 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

【思路】

1、dp数组的含义

dp:定义状态dp[i][j]为杨辉三角中第i行第j列(行索引从0开始)的元素值。

2、递推公式

dp[i][j] = dp[i-1][j-1] + dp[i-1][j];

3、初始化dp数组

每一行第一个元素和最后一个元素都是1,即当i = 0或j=i时,dp[i][j]=1。

4、确定遍历顺序

5、打印dp数组

public class Solution {
	public List<List<Integer>> generate(int numRows) {
		//初始化动态规划数组
		Integer[][] dp = new Integer[numRows][];
		//遍历每一行
		for (int i = 0; i < numRows; i++) {
			//初始化当前行
			dp[i] = new Integer[i + 1];
			//每一行的第一个和最后一个元素为1;
			dp[i][0] = dp[i][i] = 1;
			//计算中间元素
			for (int j = 1; j < i; j ++) {
				//中间元素等于上一行的相邻两个元素之和
				dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
			}
		} 
		//将动态规划数组转换为结构列表
		List<List<Integer>> result = new ArrayList<List<Integer>>();
		for (Integer[] row: dp) {
			result.add(Arrays.asList(row));
		}
		//返回结果列表
		return result;
	}
}

与08_杨辉三角相似的内容:

08_杨辉三角

118. 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2:

08. C语言函数

【函数基础】 函数用于将程序代码分类管理,实现不同功能的代码放在不同函数内,一个函数等于一种功能,其它函数可以调用本函数执行。 C语言规定所有的指令数据必须定义在函数内部,比如之前介绍的程序执行流程控制语句,另外修改全局变量的操作也是通过指令进行的,所以全局变量只能在函数内修改。 数据作用域 定义的

Python数据分析 DataFrame 笔记

08,DataFrame创建 DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。 行索引:index

[转帖]Linux 磁盘I/O 调度算法 说明

2022-08-23 13:031361转载Linux 1 Linux 4.0 IO协议栈框架图 I/O 调度算法在各个进程竞争磁盘I/O的时候担当了裁判的角色。他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能。 Linux 4.0 IO协议栈框架图 I/O调度程序的总结 当向

[转帖]DM 达梦数据库 记录超长 错误解决方法

2022-08-24 09:423551原创DM 达梦 本文链接:https://www.cndba.cn/dave/article/108596 1 问题说明与分析 在达梦数据库中进行数据库Insert时可能会遇到如下错误: java.sql.SQLException: Record length

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以

[转帖]DM 达梦数据库 忘记 SYSDBA 密码 解决方法

2022-08-04 22:2318321原创DM 达梦 本文链接:https://www.cndba.cn/dave/article/108578 1 背景说明 在其他的关系型数据库中,都有OS认证,所以我们并不担心忘记超级管理员密码的问题。 在达梦数据库中,因为安全的原因,默认并没有启用本地OS

Swift开发基础08-高阶函数

高阶函数是指接受其它函数作为参数,或者返回其它函数的函数。Swift 提供了许多内置的高阶函数,这些函数在处理集合类型数据(如数组、集合等)时尤其有用。常见的高阶函数包括 map、filter、reduce、flatMap 和 compactMap。 一、常用高阶函数 1. map map 函数会对

[转帖]什么是 istio

https://cizixs.com/2018/08/26/what-is-istio/ 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 istio,并且知道它和 service mesh 有着牵扯。这篇文章是我之前在公司内部做过的分享,可以作为了解 istio 的入门介绍,了解什么是 i

[转帖]serverless 平台 knative 简介

https://cizixs.com/2018/08/25/knative-serverless-platform/ 什么是 Knative? knative 是谷歌开源的 serverless 架构方案,旨在提供一套简单易用的 serverless 方案,把 serverless 标准化。目前参与