leetcode746-Min Cost Climbing Stairs

题目

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

示例 1:

输入:cost = [10,15,20]

输出:15

解释:你将从下标为 1 的台阶开始。

  • 支付 15 ,向上爬两个台阶,到达楼梯顶部。
    总花费为 15 。

分析

这道题目很明显用动态规划的思路。我们可以定义dp[i]为到达第i层楼梯所支付的最小费用,如果要往上爬则要叠加当前楼层的费用。接下来看如何推倒dp,因为可以通过2个台阶或者1个台阶的方式到达,所以要么是dp[i-2]+cost[i-2],要么是dp[i-1]+cost[i-1],且俩个里面取最小值

java 复制代码
public class minCostClimbingStairs {
	public static void main(String[] args) {
		int[] arr ={1,100,1,1,1,100,1,1,100,1};
		System.out.println(minCost(arr));
	}
	public static int minCost(int[] arr) {
		int len = arr.length;
		int[] dp = new int[len+1];
		for(int i = 2;i<=len;i++) {
			dp[i] = Math.min(dp[i-2]+arr[i-2],dp[i-1]+arr[i-1]);
		}
		return dp[len];
	}
}
l
相关推荐
wuminyu6 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
MediaTea7 小时前
AI 术语通俗词典:C4.5 算法
人工智能·算法
Navigator_Z7 小时前
LeetCode //C - 1033. Moving Stones Until Consecutive
c语言·算法·leetcode
WBluuue7 小时前
数据结构与算法:莫队(一):普通莫队与带修莫队
c++·算法
callJJ7 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
风筝在晴天搁浅8 小时前
n个六面的骰子,扔一次之后和为k的概率是多少?
算法
千寻girling8 小时前
《 Git 详细教程 》
前端·后端·面试
wbs_scy8 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
MATLAB代码顾问9 小时前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
代码飞天9 小时前
机器学习算法和函数整理——助力快速查阅
人工智能·算法·机器学习