5月8日爬楼梯+使用最小花费爬楼梯

70.爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

提示:

  • 1 <= n <= 45

思路

首先确定dp数组的含义:dp[n]表示爬到n层楼需要的方法。

初始化dp数组:1层只有一种方法可以到达,所以初始化dp[1]=1,2层两种方法,dp[2]=2

得出递推公式:假设我们要到达n层,而n层必定是由n-2层爬两格或者n-1层爬一格到达,所以到达n层的方法就是到达n-1层的方法数加到达n-2层的方法数,此时n>2,dp[n]=dp[n-2]+dp[n-1]

然后递推算出dp数组的值即可。

代码

    class Solution {public int climbStairs(int n) {int[] dp=new int[n+1];if(n==1){return 1;}dp[1]=1;dp[0]=1;for(int i=2;i<=n;i++){dp[i]=dp[i-2]+dp[i-1];}return dp[n];}}

746.使用最小花费爬楼梯

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

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

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

示例 1:

输入:cost = [10,15,20]
输出:15
解释:你将从下标为 1 的台阶开始。
- 支付 15 ,向上爬两个台阶,到达楼梯顶部。
总花费为 15 。

示例 2:

输入:cost = [1,100,1,1,1,100,1,1,100,1]
输出:6
解释:你将从下标为 0 的台阶开始。
- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。
- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。
- 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。
- 支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。
- 支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。
- 支付 1 ,向上爬一个台阶,到达楼梯顶部。
总花费为 6 。

提示:

  • 2 <= cost.length <= 1000
  • 0 <= cost[i] <= 999

思路

题目说可以选择下表为0或1的台阶开始爬楼梯,那么如果下表为1的台阶就是楼顶的话那么我们不需要花费即可爬到顶部,所以初始化dp[0]=dp[1]=0,这里dp数组的含义dp[i]就是到达i层楼梯的最低花费。

与上面题目相似的是,本题每次爬楼梯也只能爬1到两层,所以dp[i]必然由dp[i-2]&dp[i-1]得到,那么在考虑到本题每个阶梯都有对应cost,所以dp[i]=Math.min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1])

代码

class Solution {public int minCostClimbingStairs(int[] cost) {int n=cost.length;int[] dp=new int[n+1];if(n==1||n==0){return 0;}dp[0]=dp[1]=0;for(int i=2;i<=n;i++){dp[i]=Math.min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]);}return dp[n];}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EVENT事件调度(应用层级)操作注意事项

文章目录 简要注意事项API说明1、1毫秒计时驱动2、1秒计时驱动2、设置一个单位时间为1毫秒的周期性事件3、设置一个单位时间为1秒的周期性事件4、单次触发事件5、清除停止事件5、缓存事件触发标志6、获取事件状态 示例源码 简要 最大支持32个事件标志管理&#xff0c;倒计时精度…

java Io流学习归纳

- 固定套路&#xff1a;1. 创建IO流对象 2. 读写文件 3. 关闭流 - 固定的API方法&#xff1a; //读&#xff1a;read()&#xff1a; /*读一个字节/字符*/int read() /*读一个字节/字符数组*/ int read(byte[] buf)int read(char[] cbuf) //写&#xff1a;wri…

【数字经济】上市公司供应链数字化数据(2000-2022)

数据来源&#xff1a; 时间跨度&#xff1a;2000-2022年 数据范围&#xff1a;各上市企业 数据指标&#xff1a; 样例数据&#xff1a; 参考文献&#xff1a;[1]刘海建,胡化广,张树山,等.供应链数字化的绿色创新效应[J].财经研究,2023,49(03):4-18. 下载链接&#xff1a;https:…

Linux(openEuler、CentOS8)基于chrony企业内网NTP服务器搭建实验

一、知识点 chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的 chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间&#xff0c;默认的配置文件是 /etc/chrony.conf chronyc 通过 323 端口与 chronyd 交互&#xff0c;可监控 chronyd 的性能并在运…

基于springboot+vue+Mysql的口腔管理平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【3dmax笔记】026:挤出和壳修改器的使用

文章目录 一、修改器二、挤出三、壳 一、修改器 3ds Max中的修改器是一种强大的工具&#xff0c;用于创建和修改复杂的几何形状。这些修改器可以改变对象的形状、大小、方向和位置&#xff0c;以生成所需的效果。以下是一些常见的3ds Max修改器及其功能&#xff1a; 挤出修改…

Day22 代码随想录打卡|字符串篇---实现 strStr()

题目&#xff08;leecode T28&#xff09;&#xff1a; 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1…

第 8 章 电机测速(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.3.3 电机测速01_理论 测速实现是调速实现的前提&#xff0c;本节主要介绍AB相增量式编码器测速原理。 1.概…

可视化面板布局适配屏幕-基于 flexible.js + rem 智能大屏适配

可视化面板布局适配屏幕-基于 flexible.js rem 智能大屏适配 VScode 安装cssrem插件引入flexible.js在之后的开发都使用rem为单位&#xff0c;安装cssrem插件就是为了快捷将px转为rem我们的设计稿是1920px&#xff0c;设置最小宽度为1024px&#xff0c;最后&#xff0c;我们可…

管理非结构化数据

据IDC调查&#xff0c;当前企业80%的数据为非结构化数据或半结构化数据&#xff0c;而结构化数据是他们管理的重点&#xff0c;数据的大头-非结构化数据却被忽视。然而&#xff0c;非结构化数据也有着它的价值。 管理好非结构化数据对于公司释放有价值资产、高效决策和高效部署…

nodejs之log4js日志管理

log4js官网 npm i log4jsconst log4js require("log4js"); const path require("path"); Object.defineProperties; log4js.configure({appenders: {aaa: {type: "dateFile", //设置为这种类型&#xff0c;日志文件会分割filename: path.reso…

数据安全全场景覆盖

随着万物互联时代的到来&#xff0c;海量物联网设备产生的庞大数据逐渐超出云端服务器的处理能力&#xff0c;同时算力向边缘侧不断迁移&#xff0c;边缘计算逐渐成为云计算的重要延伸和补充。根据《中国边缘计算服务器市场报告》、《中国边缘云计算行业展望报告》等预测&#…

rdflib命名空间的问题

yaga Namespace("https://yago-knowledge.org/resource/") a yaga.Apple b yaga[Appel]这两者的区别&#xff0c;yaga[Appel]这里的Apple是变量&#xff0c;而yaga.Apple生成的实体就是“https://yago-knowledge.org/resource/Apple”

县供电公司员工向媒体投稿发文章用亲身经历告诉你并不难

在县供电公司的日子里,我肩负着一项至关重要的使命——信息宣传工作。这不仅仅是一份职责,更是连接公司与外界的桥梁,通过新闻稿件传递我们的声音,展示我们的成果。然而,回忆起刚刚踏入这个领域的时光,那段经历至今让我感慨万千。 初涉投稿,步履维艰 刚接手这项工作时,我的投稿…

又发现一个ai生成音乐的网站-heymusic

网址 https://heymusic.ai/ 尴尬&#xff0c;不挂梯子能登录进来&#xff0c;但是谷歌账号注册不了&#xff0c;刷新了几遍也没注册上。 看了下价格&#xff0c;应该不是免费的&#xff0c;所以也没了试用的兴趣。 我也不想用别的邮箱注册了&#xff0c;所以只能简单的水一…

Spring Boot应用部署 - Tomcat/Jetty/Undertow容器对比和使用场景

在前面的文章中&#xff0c;我们介绍了如何替换Tomcat容器&#xff0c;现总结下Tomcat/Jetty/Undertow容器。 那在Spring Boot应用部署中&#xff0c;常见的三种Web容器是Tomcat、Jetty和Undertow&#xff0c;它们各有特点&#xff0c;适用于不同的应用场景&#xff1a; Tomc…

频谱分析:深入解析与全面介绍

频谱分析 一、引言 频谱分析&#xff0c;作为一种广泛应用于信号处理和波谱分析的方法&#xff0c;其在现代科技领域的重要性不言而喻。从基础的物理现象到复杂的通信系统&#xff0c;频谱分析都扮演着至关重要的角色。本文将对频谱分析进行深入的解析和全面的介绍&#xff0…

速盾的具体防御能力如何?

速盾是一家专注于网络安全领域的技术公司&#xff0c;致力于为企业提供全方位的网络安全防护服务。其具体防御能力主要体现在以下几个方面&#xff1a; DDoS防御&#xff1a;速盾采用智能化的DDoS防护系统&#xff0c;能够及时识别和拦截各类DDoS攻击流量&#xff0c;确保企业网…

A*算法求最短路

Problem: 无链接 文章目录 思路解题方法复杂度Code 思路 这是一个经典的A寻路算法问题。A算法是一种启发式搜索算法&#xff0c;题解结合了最佳优先搜索和Dijkstra算法的优点&#xff0c;能够在寻找最短路径的过程中避免大量的无谓搜索&#xff0c;提高了效率。 在这个问题中&a…

VxTerm使用教程:连接SSH服务端设备,什么是SSH

一、什么是SSH&#xff1f; <摘自百度> 安全外壳协议 SSH&#xff0c;即安全外壳协议&#xff08;Secure Shell&#xff09;&#xff0c;是一种网络协议&#xff0c;用于在计算机网络上提供安全的远程登录和命令执行功能。 SSH通过加密通信通道来保护数据传输&#xff0c…