golang刷leetcode技巧之如何求三角形最小路径和
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章给大家分享的是有关golang刷leetcode技巧之如何求三角形最小路径和的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。三角形最小路径和给定一个三角形,找出自顶向
千家信息网最后更新 2025年01月31日golang刷leetcode技巧之如何求三角形最小路径和
这篇文章给大家分享的是有关golang刷leetcode技巧之如何求三角形最小路径和的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。
相邻的结点 在这里指的是 下标
与 上一层结点下标
相同或者等于 上一层结点下标 + 1
的两个结点。
例如,给定三角形:
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
自顶向下的最小路径和为 11
(即,2 + 3 + 5 + 1 = 11)。
说明:
如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。
解题思路:
1,对于位置[i,j]我们选[i+1,j]还是[i+1,j+1]取决于
sum(i+1,j)和sum(i+1,j+1)
2,递归可以解决,但是不是最优
3,动态规划
A,第i行依赖于第i+1行,所以我们倒着来dp[i][j]=min(dp[i+1][j],dp[i+1][j+1])+triangle[i][j]
B,为了减少空间复杂度,我们第i行结果直接覆盖第i+1 行
代码实现:1递归
func minimumTotal(triangle [][]int) int {
if len(triangle)<1 || len(triangle[0])<1{
return 0
}
sum:=triangle[0][0]
sum+=min(triangle,1,0)
return sum
}
func min(a[][]int,i,j int)(int){
if i>=len(a) {
return 0
}
a0:=min(a,i+1,j)
a1:=min(a,i+1,j+1)
if a[i][j]+a0
return a[i][j]+a0
}
return a[i][j+1]+a1
}
代码实现:2动态规划
func minimumTotal(triangle [][]int) int {
if len(triangle)<1 || len(triangle[0])<1{
return 0
}
l:=len(triangle[len(triangle)-1])
dp:=make([]int,l)
for i:=0;i
dp[i]=triangle[len(triangle)-1][i]
}
for i:=len(triangle)-2;i>=0;i--{
for j:=0;j
if dp[j]
dp[j]+=triangle[i][j]
}else{
dp[j]=dp[j+1]+triangle[i][j]
}
}
}
return dp[0]
}
感谢各位的阅读!关于"golang刷leetcode技巧之如何求三角形最小路径和"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
三角形
三角
最小
路径
结点
下标
技巧
自顶向下
代码
内容
动态
更多
空间
篇文章
上一
递归
规划
不错
复杂
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
介绍网络安全 数据
金仓数据库相关提问
网络安全综治材料
国外云服务器哪家最好
软件开发人员现状调查
cis网络安全创新大会日程
cats连不上服务器
网络安全正能量的句子简短
山东省网络安全培训班
云服务器 固定ip
大学生网络安全知识培训内容
如何使用表格中的数据库
赛尔号服务器一般维护多久
信阳市网络安全宣传活动
数据库聚核函数有哪些
数据库系统研究的主要内容
软件开发培训多久
dni数据库
为什么有流量也无法连接服务器
乐学邦网络技术有限公司
物联网服务器学什么
电大服务器虚拟化管理
服务器怎么重新设置网络
接软件开发项目+网站
松岗软件开发培训学校
安卓数据库登陆
软件开发的主要成本有哪些
qt数据库driver类
网络安全管理办法印发时间
保定网络安全和信息化委员会简称