使用最小花费爬楼梯 LeetCode 746|刷题打卡

278 阅读1分钟

题目:

题解

题解:这个和爬楼梯问题基本一样,比如你需要爬到index=2的楼梯上就是第三层楼梯,有两种从index=0走两步,或者从index=1走一步上来,当2≤i≤n那么dp的状态转移方程就是 dp[i]=min(dp[i−1]+cost[i−1],dp[i−2]+cost[i−2])如果我申请两个变量表示从第dp[i−1]为curr爬上来和dp[i−2]为prev爬上来变成 int next=min(curr+cost[i−1],prev+cost[i−2])。然后使用使用滚动数组的思想每循环一遍prev=curr,让curr=next一直替换三个变量的值最后返回curr的值就是最小花费

代码

public int minCostClimbingStairs(int[] cost) {
        int n = cost.length;
        int prev = 0, curr = 0;
        for(int i=2;i<=cost.length;i++){
            int next=Math.min(curr+cost[i-1],prev+cost[i-2]);
            prev=curr;
            curr=next;
        }
        return curr;
    }

备注

本文正在参与「掘金 2021 春招闯关活动」, 点击查看