From e498df6ace098b4f4fd78222858ce8b84c527fc8 Mon Sep 17 00:00:00 2001 From: zhicheng lee <904688436@qq.com> Date: Tue, 6 Sep 2022 20:14:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=200746.=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E8=8A=B1=E8=B4=B9=E7=88=AC=E6=A5=BC=E6=A2=AF?= =?UTF-8?q?.md=20Java=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加第一步支付费用版本的Java代码 删除原版本中冗余的代码,已测试代码 添加CPP代码的语法高亮 --- problems/0746.使用最小花费爬楼梯.md | 29 ++++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/problems/0746.使用最小花费爬楼梯.md b/problems/0746.使用最小花费爬楼梯.md index 92fb2920..9d3bd7fa 100644 --- a/problems/0746.使用最小花费爬楼梯.md +++ b/problems/0746.使用最小花费爬楼梯.md @@ -66,7 +66,7 @@ 所以初始化代码为: -``` +```CPP vector dp(cost.size()); dp[0] = cost[0]; dp[1] = cost[1]; @@ -201,15 +201,32 @@ public: ### Java + ```Java +// 方式一:第一步支付费用 class Solution { public int minCostClimbingStairs(int[] cost) { - if (cost == null || cost.length == 0) { - return 0; - } - if (cost.length == 1) { - return cost[0]; + int len = cost.length; + int[] dp = new int[len + 1]; + + // 从下标为 0 或下标为 1 的台阶开始,因此支付费用为0 + dp[0] = 0; + dp[1] = 0; + + // 计算到达每一层台阶的最小费用 + for (int i = 2; i <= len; i++) { + dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]); } + + return dp[len]; + } +} +``` + +```Java +// 方式二:第一步不支付费用 +class Solution { + public int minCostClimbingStairs(int[] cost) { int[] dp = new int[cost.length]; dp[0] = cost[0]; dp[1] = cost[1];