LeetCode-746-使用最小花费爬楼梯-动态规划

题目描述:

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

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

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

题目链接:LeetCode-746-使用最小花费爬楼梯

解题思路:注释中有详解。
代码实现:

java 复制代码
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        // 1. 确定 dp[i] 的含义: dp[i]表示爬到第 i 个位置的最小花费
        // 2. 递推公式:dp[i]=Math.min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])
        //            dp[i-1]:再加上向上跳 1步的花费 cost[i-1]
        //            dp[i-2]:再加向上上跳 2步的花费 cost[i-2]
        // 3. 如何初始化:dp[0]=0; dp[1]=0,因为不需要花费体力,开始爬才会产生花费
        // 4. 遍历的方向:从前向后遍历
        if (cost.length==2){
            return Math.min(cost[0], cost[1]);
        }

        int[] dp = new int[cost.length+1];
        dp[0]=0;
        dp[1]=0;
        for (int i = 2; i < dp.length ; i++) {
            dp[i]=Math.min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);
        }
        return dp[dp.length-1];
    }
}
相关推荐
Jayden_Ruan10 分钟前
C++十进制转二进制
数据结构·c++·算法
Haooog23 分钟前
98.验证二叉搜索树(二叉树算法题)
java·数据结构·算法·leetcode·二叉树
Macre Aegir Thrym1 小时前
MINIST——SVM
算法·机器学习·支持向量机
Young_Zn_Cu2 小时前
LeetCode刷题记录(持续更新中)
算法·leetcode
天选之女wow2 小时前
【代码随想录算法训练营——Day31】贪心算法——56.合并区间、738.单调递增的数字、968.监控二叉树
算法·leetcode·贪心算法
lixinnnn.3 小时前
贪心:火烧赤壁
数据结构·c++·算法
小小前端_我自坚强3 小时前
前端算法相关详解
前端·算法
前端 贾公子3 小时前
《Vuejs设计与实现》第 5 章(非原始值响应式方案)下 Set 和 Map 的响应式代理
数据结构·算法
WWZZ20254 小时前
ORB_SLAM2原理及代码解析:SetPose() 函数
人工智能·opencv·算法·计算机视觉·机器人·自动驾驶
小马学嵌入式~5 小时前
堆排序原理与实现详解
开发语言·数据结构·学习·算法