LeetCode 746:使用最小花费爬楼梯 —— 题解笔记

LeetCode 746:使用最小花费爬楼梯 ------ 题解笔记

🔗 题目链接

👉 https://leetcode.cn/problems/min-cost-climbing-stairs/


📖 内容概要

给定一个数组 cost,其中 cost[i] 表示登上第 i 阶楼梯所需支付的费用。

你可以从第 0 阶或第 1 阶开始,支付该台阶的费用后继续向上

求到达顶层(楼顶)的最小花费。

✅ 动态规划

✅ 一维 DP

✅ 与「爬楼梯」「斐波那契」高度相似


💡 解题思路

一、状态定义(非常关键)

java 复制代码
dp[i] = 到达第 i 阶楼梯的最小花费

⚠️ 注意:

到达第 i 阶时,还没有支付 cost[i]


二、状态转移方程

到达第 i 阶,只能来自:

  • i-1 阶,再跨 1 步
  • i-2 阶,再跨 2 步
java 复制代码
dp[i] = min(
    dp[i-1] + cost[i-1],
    dp[i-2] + cost[i-2]
)

三、初始条件

java 复制代码
dp[0] = 0; // 起点
dp[1] = 0; // 可以从第 1 阶开始

四、最终结果

java 复制代码
return dp[n];

楼顶在第 n 阶(数组外)


✅ AC 代码(Java)

java 复制代码
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int n = cost.length;
        int[] dp = new int[n + 1];

        dp[0] = 0;
        dp[1] = 0;

        for (int i = 2; i <= n; i++) {
            dp[i] = Math.min(
                dp[i - 1] + cost[i - 1],
                dp[i - 2] + cost[i - 2]
            );
        }
        return dp[n];
    }
}

⏱️ 复杂度分析

指标 复杂度
时间复杂度 O(n)
空间复杂度 O(n)(可优化为 O(1))

📌 三题横向对比

题目 本质 状态转移 初始条件
509. 斐波那契数(Fibonacci Number) 递推 f(i)=f(i-1)+f(i-2) f(0)=0, f(1)=1
70. 爬楼梯(Climbing Stairs) 方案数 dp[i]=dp[i-1]+dp[i-2] dp[0]=1, dp[1]=1
746. 最小花费爬楼梯 最小代价 dp[i]=min(dp[i-1]+c[i-1], dp[i-2]+c[i-2]) dp[0]=0, dp[1]=0

✅ 三者关系图

复制代码
Fibonacci  →  爬楼梯  →  最小花费爬楼梯
(基础递推)(组合计数)(带权最优解)

👉 这是 DP 学习的标准演进路线


✅ 空间优化(进阶)

java 复制代码
int prev2 = 0, prev1 = 0;
for (int i = 2; i <= cost.length; i++) {
    int curr = Math.min(prev1 + cost[i-1], prev2 + cost[i-2]);
    prev2 = prev1;
    prev1 = curr;
}
return prev1;

📌 面试一句话总结

这道题是"带权重的爬楼梯",状态转移和斐波那契几乎一样,只是从求和变成了取最小值。

相关推荐
不会就选b4 分钟前
算法日常・每日刷题--<贪心>15
算法
我是大猴子6 分钟前
redis执行get等命令时底层操作
java
叶总没有会16 分钟前
微服务--分布式基础
java·spring·spring cloud·微服务
鹿角片ljp17 分钟前
Prompt Cache、Token 成本与 Plan Compiler 的工程设计
java·python·算法
Wang's Blog1 小时前
Java 接入Redis: 五大数据类型与存储结构选型
java·服务器·redis
Wang's Blog1 小时前
Java 接入Redis: 字符串与哈希类型操作命令
java·服务器·redis
智慧物业老杨5 小时前
物业数字化落地思考:真正的转型,是底层数据秩序的重构
java·大数据·人工智能·微服务·系统架构
萧西待水7 小时前
奥赛一本通 1447 靶形数独
算法·深度优先
星空8 小时前
金蝶苍穹build.gradle配置
java·build.gradle
梦帮科技9 小时前
AI 音乐产品的发布工程:验证门、数据发布、回滚与生产运维纪律
数据结构·数据库·架构·node.js·音视频·动态规划·推荐算法