package leecode;
/**
* 746. 使用最小花费爬楼梯
*
* 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。
*
* 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。
*
* 请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。
*
*
* @author Tang
* @date 2021/9/15
*/
public class MinCostClimbingStairs {
/**
* 动态规划
* n :到某个台阶n
* f(n) :到某个台阶n所需最小体力
* f(n) = min(f(n-1) , f(n-2))
* base: f(1) f(2)
*
*
*
* @param cost
* @return
*/
public int minCostClimbingStairs(int[] cost) {
// 代表f(n-1)
int n1 = 0;
// 代表f(n-2)
int n2 = 0;
int minCost = 0;
for(int i = 0; i <= cost.length; i++) {
if(i == 0) {
minCost = cost[0];
n2 = cost[0];
continue;
}
if(i == 1) {
minCost = cost[1];
n1 = cost[1];
continue;
}
if(i == cost.length) {
minCost = Math.min(n1, n2);
break;
}
minCost = Math.min(n1, n2) + cost[i];
n2 = n1;
n1 = minCost;
}
return minCost;
}
public static void main(String[] args) {
int[] cost = {1, 100, 1, 1, 1, 100, 1, 1, 100, 1};
new MinCostClimbingStairs().minCostClimbingStairs(cost);
}
}
Leecode no.746 使用最小花费爬楼梯
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
746. 使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支
leetcode 算法 动态规划 商业 数组 -
【LeetCode】746. 使用最小花费爬楼梯
从这道简单的题来看,动态规划做的事儿就是:(1)设定一个状态,这个状态可以需要用一个数组来记录;(2)确定状态间的转移公式;得出正确解
leetcode 算法 List 数组 动态规划 -
746. Min Cost Climbing Stairs* (使用最小花费爬楼梯)
746. Min Cost Climbing Stairs* (使用最小花费爬楼梯)https://leetcode.co
动态规划 leetcode c++ 数组 状态方程 -
jquery chart 设置背景色
JQuery bootstrap datepicker这个日期简直非常好用,不过项目有这样的需求,点击日期查询月份,但需要先判断哪些月份有数据,然后再设置这几个月份为特殊的背景颜色,以便用户知道哪些月份有数据,就不用一个个月份去点击查看数据了,这样是不是很方便,百度上基本没有答案,连了外网查看到的资料如下,正是参考下面这些链接,才
jquery chart 设置背景色 jquery bootstrap datepicker 设置月份背景