题目:
题解
题解:这个和爬楼梯问题基本一样,比如你需要爬到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 春招闯关活动」, 点击查看。