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
相关推荐
吃着火锅x唱着歌3 分钟前
LeetCode 1616.分割两个字符串得到回文串
算法·leetcode·职场和发展
Monkey-旭10 分钟前
Android JNI 语法全解析:从基础到实战
android·java·c++·c·jni·native
孟大本事要学习24 分钟前
算法第28天|动态规划:基础理论、斐波那契数、爬楼梯、使用最小花费爬楼梯
算法·动态规划
LastWhisperw28 分钟前
音频算法基础(语音识别 / 降噪 / 分离)
算法·音视频·语音识别
魑魅魍魉都是鬼31 分钟前
随缘玩 一: 代理模式
android·java·代理模式
lingling00933 分钟前
艾利特机器人:光伏机器人如何重塑清洁能源制造新格局
大数据·人工智能·算法
流星白龙34 分钟前
【C++算法】75.优先级队列_数据流中的第 K 大元素
开发语言·c++·算法
你我约定有三1 小时前
分布式微服务--RPC:原理、使用方式、与 HTTP/REST 的区别与选择
java·开发语言·分布式·后端·微服务·rpc
刚入坑的新人编程1 小时前
暑期算法训练.10
数据结构·c++·算法·排序算法
Fine姐1 小时前
博弈论03——混合纳什均衡的收益求法
笔记·算法