可视化图解算法74:最小花费爬楼梯

1.题目

描述

给定一个整数数组 cost ,其中 cost[i]是从楼梯第i 个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

数据范围:数组长度满足 1≤n≤105 ,数组中的值满足 1 ≤cost~i~≤10^4^

示例1

输入:

2,5,20

返回值:

5

说明:

你将从下标为1的台阶开始,支付5 ,向上爬两个台阶,到达楼梯顶部。总花费为5

示例2

输入:

1,100,1,1,1,90,1,1,80,1

返回值:

6

说明:

你将从下标为 0 的台阶开始。 1.支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。 2.支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。 3.支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。 4.支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。 5.支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。 6.支付 1 ,向上爬一个台阶,到达楼梯顶部。 总花费为 6 。

2. 题解思路

本题求解的是最小花费,因此需要在两条路径中选取最小的值。解题思路如下:

如果文字描述的不太清楚,你可以参考视频的详细讲解。

3.编码实现

核心代码如下:

Go 复制代码
//1.定义状态.	i:第i个台阶; dp[i]:到达第i个台阶的最小花费
	dp := make([]int, len(cost)+1)
	//2.初始化边界条件:
	dp[1] = min(0, cost[0])       // dp[1]=cost[0],到达第1阶的费用(从第0阶上来或者从第1阶就地开始);
	dp[2] = min(cost[0], cost[1]) //dp[2]=min(cost[0],cost[1]),从下标为 0 或下标为 1 的台阶爬到第2个台阶的费用;
	//3.确定递推公式:
	for i := 3; i <= len(cost); i++ {
		pre1 := dp[i-1] + cost[i-1] //到 i-1个台阶的费用  +   第 i-1 个台阶的费用
		pre2 := dp[i-2] + cost[i-2] //到 i-2个台阶的费用  +   第 i-2 个台阶的费用
		// 到i个台阶的费用:来自于 i-1、i-2(取最小值)
		dp[i] = min(pre1, pre2)
	}
	return dp[len(cost)]
}
func min(a, b int) int {
	if a >= b {
		return b
	}
	return a
}

具体完整代码你可以参考下面视频的详细讲解。

4.总结

本题的关键是确定变量i、dp数组的含义,如果理解了他们的含义,就能推到出递推公式,进而写出代码。

《数据结构与算法》深度精讲课程正式上线啦!7 大核心算法模块全解析:

✅ 链表

✅ 二叉树

✅ 二分查找、排序

✅ 堆、栈、队列

✅ 回溯算法

✅ 哈希算法

✅ 动态规划

无论你是备战笔试面试 、提升代码效率 ,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

对于LeetCode数据结构与算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:知之者不如好之者,好知之者不如乐之者。

相关推荐
leoufung7 小时前
LeetCode 135. Candy:从直觉到最优解的完整推导
算法·leetcode·职场和发展
WHS-_-20227 小时前
Tensor-Based Target Sensing for Resource-Irregular ISAC Systems
linux·人工智能·算法
成都易yisdong7 小时前
高程异常计算器:一款集成Geoid、重力场与地磁场的专业工具
算法
王老师青少年编程8 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【反悔贪心】:种树
c++·算法·贪心·反悔贪心·csp·信奥赛·种树
南宫萧幕8 小时前
基于 PSO 的 HEV 能量管理策略:从联合仿真建模到排错实战
开发语言·python·算法·matlab·控制
生物信息与育种8 小时前
全基因组重测序及群体遗传与进化分析技术服务指南
人工智能·深度学习·算法·数据分析·r语言
AI人工智能+电脑小能手8 小时前
【大白话说Java面试题】【Java基础篇】第23题:ConcurrentHashMap的底层原理是什么
java·开发语言·算法·哈希算法·散列表·hash
葳_人生_蕤8 小时前
hot100——回溯和DFS、BFS
算法·深度优先
Eloudy8 小时前
Steane码的稳定子的生成元集计算过程
算法
MegaDataFlowers8 小时前
快速算法验证流水线
算法