BM64 题解 | #最小花费爬楼梯#
最小花费爬楼梯
https://www.nowcoder.com/practice/6fe0302a058a4e4a834ee44af88435c7
dp:斐波那契变种
和fibbo的区别:
- dp[i]的组成不光是dp[i-1]和dp[i-2],还有他们对应的代价cost[i-1],cost[i-2]
- dp[i] 取的是 dp[i-1]+cost[i-1] 和 dp[i-2]+cost[i-2] 中的小值
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cost int整型一维数组
* @return int整型
*/
public int minCostClimbingStairs (int[] cost) {
int len = cost.length;
int[] dp = new int[len + 1];
dp[0] = 0;
dp[1] = 0;
// dp[i] 表示到达第i级阶梯需要的最小花费为 dp[i]
for (int i = 2; i < len+1; ++i) {
// 在 i 处可以从 i-1 跳上来,也可以从 i-2 处跳上来
// 从 i-1 跳上来的代价就是 dp[i-1] + 在 i-1 处的代价 cost[i-1]
// 从 i-2 跳上来的代价就是 dp[i-2] + 在 i-2 处的代价 cost[i-2]
// 因为 dp[i] 表示的是在 i 处的最小代价,因此二者取min即可
dp[i] = Math.min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2]);
}
return dp[len];
}
}
顺丰集团工作强度 304人发布