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

server/2024/12/22 9:59:09/

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.ppmy.cn/server/40434.html

相关文章

細講《弟子規》41

問&#xff1a;第一位朋友問到&#xff0c;請問老師&#xff0c;學習《弟子規》有沒有其他相輔相成的學習教材可以幫我們更上層樓&#xff1f;其學習的順序次第為何&#xff1f; 答&#xff1a;《弟子規》可以配合《德育課本》來學習。《德育課本》好像就是這些古聖先賢把理論跟…

架构师:搭建Spring Security、OAuth2和JWT 的安全认证框架

1、简述 Spring Security 是 Spring 生态系统中的一个强大的安全框架,用于实现身份验证和授权。结合 OAuth2 和 JWT 技术,可以构建一个安全可靠的认证体系,本文将介绍如何在 Spring Boot 中配置并使用这三种技术实现安全认证,并分析它们的优点。 2、Spring Security Spri…

QT设计模式:装饰器模式

基本概念 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向现有对象添加新功能&#xff0c;又不改变其结构。通过将对象放入包装器中&#xff0c;然后用装饰器对象包裹原始对象&#xff0c;以提供额外的功能。 装饰器模式需要实…

01-new SpringApplication

准备配置Bean Configuration public class TestSpringApplication {static class Bean1 {}static class Bean2 {}static class Bean3 {}Beanpublic Bean2 bean2() {return new Bean2();}Beanpublic TomcatServletWebServerFactory tomcatServletWebServerFactory() {return ne…

Leetcode 3148. Maximum Difference Score in a Grid

Leetcode 3148. Maximum Difference Score in a Grid 1. 解题思路2. 代码实现 题目链接&#xff1a;3148. Maximum Difference Score in a Grid 1. 解题思路 这一题的话算是一个脑筋急转弯的题目吧&#xff0c;本质上就是求各个坐标下其右下方矩阵当中除自己外最大的元素是多…

Redis进阶学习

Redis进阶学习 一、Redis事务1.2 Redis监控1.3 Jedis连接1.4 SpringBoot整合1.5 自定义RedisTemple1.6 Redis.conf详解 二、 Redis持久化2.1 RDB2.2 AOF进程 三、Redis发布订阅3.1 Redis主从复制3.2 集群环境配置3.3、复制原理3.4、宕机后主动变为主机3.5、哨兵模式 四、Redis缓…

ID-Aligner:通过奖励反馈学习提升身份保持文本到图像生成的性能

在人工智能领域&#xff0c;文本到图像生成&#xff08;Text-to-Image Generation&#xff0c;简称T2I&#xff09;技术近年来取得了显著进展&#xff0c;特别是在身份保持的图像生成方面&#xff0c;即生成与特定人物参考图像相匹配的新图像。这一技术在AI肖像、广告、动画和虚…

课时122:awk实践_进阶知识_赋值运算

1.2.1 赋值运算 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 awk本质上属于一种编程语言&#xff0c;所以它具有编程语言的一般功能&#xff0c;表达式、流程控制等基本上都在awk中具有想当程度的使用。这一节我们学习awk进…