leetcode 120: 三角形最小路径和

LeetCode:120 三角形最小路径和 动态规划解法 O(n)空间 LeetCode:120 三角形最小路径和 动态规划解法 O(n)空间 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n... 阅读详情

题目描述:
给定一个三角形 triangle ,找出自顶向下的最小路径和。
每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。
示例:
1:
输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
输出:11
解释:如下面简图所示:
2
3 4
6 5 7
4 1 8 3
自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。
2:
输入:triangle = [[-10]]
输出:-10
思路1:
利用递归进行暴力求解,从头开始把所有可能的路径都列出来,然后在找最小的,时间复杂度高O(2^n)。
由于在递归的过程中会进行重复计算,所以可以添加一个memory进行加速。
思路2:
dp: (1)状态DP[i,j]:从最下面一层走到当前位置的最短路径长度。
(2) DP[i, j] = min{DP[i+1, j], DP[i+1, j+1]} + triangle[i,j]
初始值:最下面一行是三角形本身的值,即DP[m-1, j] = triangle[m-1, j]

class Solution:
    def minimumTotal(self, triangle: List[List[int]]) -> int:
        mini = triangle[-1]
        for i in range(len(triangle)-2, -1, -1):
            for j in range(len(triangle[i])):
                mini[j] = triangle[i][j] + min(mini[j], mini[j+1])
        return mini[0]

在实现的时候,只用了一个一维数组,因为在本问题中,上一行只和下一行有关,之前行的可以不保留。
时间复杂度:O(n^2),空间复杂度O(n)。

【中等】力扣算法题解析LeetCode120:三角形最小路径和 该题要求计算三角形自顶向下的最小路径和。通过动态规划优化空间至O(n),逐行更新状态数组:第一列和最后一列直接累加,中间列取左上和正上位置的最小值加上当前值。最终在状态数组中找出最小值即为答案。Java实现中利用prev变量保存上一行状态,避免覆盖问题。时间复杂度O(n²),空间复杂度O(n)。可通过示例测试验证算法正确性,如输入[[2],[3,4],[6,5,7],[4,1,8,3]]输出11。进阶要求仅使用O(n)额外空间已满足。 阅读详情

相关推荐

HTML入门(详细教程),前端入门从这里开始

HTML基础教程,网页框架搭建,表单制作,了解HTML标签的基本用法,每个标签具备哪些属性。

wandertp的博客 1284

LeetCode:120. 三角形最小路径和————中等

目录题目解题思路Code运行结果 题目 120. 三角形最小路径和 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 示例 1: 输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]] 输出:11 解释:如下面简图所示:

Kinght_123的博客 459

FC游戏Hack实战:从零开始修改游戏数据

本文以《忍者神龟3》为例,详细介绍了从零开始进行FC游戏Hack的完整实战流程。通过使用FCEUX模拟器和调试器,结合“递减法”精准定位生命值内存地址,并利用十六进制编辑器修改关键指令,最终实现“无限生命”效果。文章旨在引导读者理解游戏数据修改的核心原理与操作技巧,重温经典的同时深入计算机程序运行机制。

weixin_28366353的博客 358

29.动态规划-三角形最小路径和-Leetcode 120(python)

问题描述及示例 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的...

Try_my_best51540的博客 868

告别枯燥的Unity编辑器脚本:Odin插件如何让游戏数据配置变得像搭积木一样简单?

本文详细介绍了Odin插件如何简化Unity编辑器脚本开发,使游戏数据配置变得直观高效。通过声明式特性和丰富的可视化工具,Odin让开发者告别繁琐的OnGUI代码,实现所见即所得的开发体验。文章重点展示了Odin的核心优势、魔法特性及实战案例,帮助Unity开发者提升工作效率。

weixin_28717411的博客 345

AI:Coze、Dify、n8n:三款低代码工具如何选?

Coze、Dify、n8n:三款低代码工具如何选?

Kant2048的博客 2806

LeetCode120. 三角形最小路径和(Python)

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 ...

Manson_Wang的博客 1426

姿态传感器/陀螺仪之IIS2DLPC 应用驱动程序设计

* 转换为°C单位 (参考温度为25°C,灵敏度为16 LSB/°C) */

corlin6688的博客 220

Python蓝桥杯练习18——数字三角形题目及用动态规划(dp)

类似杨辉三角的存储,定义二维数组,描述为只能向下走或者向右下走。 反过来对当前位置来说,只能是左上方的这个元素移动到当前位置,或者正上方的位置移动到当前位置。即 从顶部到底部查找最小路径,那么结点(i,j)的前驱结点只有(i-1,j-1)和(i-1,j)两个。 5的前驱结点是3和4,可以写成到达3这个结点之和 和 到达4这个结点之和的最小值 需要判断两个前驱结点的最小和,再选择,求出每个点的最短路径,再从最底层的位置找最小值就可以,找到值之后再倒退路径。 图解 1.定义一个二维数组a,.

m0_48936146的博客 947

C++软件异常分析概述

本文将详细讲述Windows系统中软件异常的分类以及常用的排查方法,给大家提供一个借鉴与参考。

dvlinker的技术专栏 4万+

《QT+PCL》点云的点选与框选

【代码】《QT+PCL》点云的点选与框选。

阁楼 3602

leetcode:120. 三角形最小路径和

不能用贪心算法去找每行最小值,因为这个不仅仅是只跟层数有关,还有一个条件是上一层到下一层,能到达的下标为该层的标或者该标+1,假如下两层中最小值的小标比较远的话,贪心选了下一层中的较小值,而无法遍历到下两层的值的话,是无法得到全局最小;因此考虑二维数组的方式,dp[i][j]表示第i行,第j列第最小路径和。然后最终答案就是第底层的结果中找最小值即可。

uncle_ll的博客 599

YOLOv11改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性

Bw−wgt2h−hgt2weight2Bweight2w−wgt​2h−hgt​2​其中weight2weight = 2weight2。

Limiiiing的博客 3052

力扣LeetCode: 120 三角形最小路径和

动态规划经典题目

weixin_73982851的博客 670

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Leetcode120(力扣120):三角形最小路径和

碰到三角形的动态规划要从下往上来,只用上一层的信息,可以将二维数据降维反复用。 注:动态规划抠好边界,dp数组和原数组 class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { int n=triangle.size(); vector<int> dp(n+1,0); for(int i=n-1;i>=0;i--

weixin_44537258的博客 243

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LeetCode算法题120:三角形最小路径和解析

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 这个题需要用...

Alex的博客 662

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

力扣:120. 三角形最小路径和

再计算的为f[1] = min(f[0],f[1]) + triangle[2][1] ,存储为f[1]其首先计算的为f[1] = f[0] + triangle[1][1] ,存储为f[1]其首先计算的为f[2] =f[1] + triangle[2][2] ,存储为f[2]再计算f[0] = f[0] + triangle[1][0],存储为f[0]再计算f[0] = f[0] + triangle[2][0],存储为f[0]给定一个三角形 triangle ,找出自顶向下的最小路径和。

yuanshenzhilu的博客 774

力扣第120题:三角形最小路径和 - C语言解法

给定一个triangle,求从顶部到底部的最小路径和。每一步可以移动到当前行的相邻数字(即下一行的相邻数字),并且只能移动到下方的两个数字之一。

weixin_48941116的博客 815

【LeetCode: 120. 三角形最小路径和 + 动态规划】

【LeetCode: 120. 三角形最小路径和 + 动态规划】给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。

Coder_ljw的博客 1093

力扣:120.三角形最小路径和

题目 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 思路 先用一个数组保存最下面那层的数据,从下往上循环。 代码 class Solution { public int...

weixin_43370149的博客 235

LeetCode 题目 120:三角形最小路径和

多种算法实现力扣120 三角形最小路径和

10年数据\经营分析经验,现任大厂数据分析负责人 638

LeetCode(120):三角形最小路径和 Triangle(Java)

2019.12.22 LeetCode 从零单刷个人笔记整理(持续更新) github:https://github.com/ChopinXBP/LeetCode-Babel 自底向上的动态规划。建立dp数组,dp[j]代表当前层j位置的最小路径和,对于每一层i,自底向上有动态转移方程: dp[j] = triangle.get(i - 1).get(j) + Math.min(dp[j], d...

NJU_ChopinXBP的博客 357

LeetCode120:三角形最小路径和

英文题目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below. For example, given the following triangle [ [2], [3,4], [...

XB_please的博客 237

Leetcode:120.三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 ...

qq_23523409的博客 289

Leetcode120:三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 //解法1 递归法 (超时) publ...

很好的坏人 184
上一篇: leetcode 70: 爬楼梯
下一篇: 动态规划-股票系列问题
coding_diamond
博客等级 码龄8年 8粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值