746. 使用最小花费爬楼梯

news/2024/10/22 23:25:55/

给你一个整数数组 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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/min-cost-climbing-stairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:动态规划

由于一次只能迈两步,所以还是考虑第i-1层和i-2层,为每一层都保存一个到达该层花费最小的数dp[i],那么第i层最小花费就为到达第i-1层的最小花费+第i-1层的花费 和 第i-2层的最小花费+第i-2层的花费中的较小值。

C++代码如下:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int N = cost.size();vector<int> dp(N+1);dp[0] = 0;dp[1] = 0;for(int i = 2;i<=N;++i){dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[N];}
};


http://www.ppmy.cn/news/57462.html

相关文章

【LeetCode】236. 二叉树的最近公共祖先

1.问题 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是…

Linux驱动之input输入子系统

输入子系统用于实现Linux系统输入设备&#xff08;鼠标 键盘 触摸屏 游戏杆&#xff09;驱动的一种框架。Linux内核将其中的固定部分放入内核&#xff0c;驱动开发时只需要实现其中的不固定部分&#xff08;主要还是和硬件相关的部分&#xff09;&#xff0c;这和platform设备…

【五一创作】人工智能前沿知识

人工智能是一种在计算机系统中模拟人类智能和思维的技术。近年来&#xff0c;人工智能技术得到了飞速发展&#xff0c;涉及到了各个领域&#xff0c;如自然语言处理、计算机视觉、智能机器人等。在这篇文章中&#xff0c;我将介绍人工智能的前沿知识。 一、深度学习 深度学习…

武忠祥老师每日一题||不定积分基础训练(三)

有理函数不定积分: ∫ 1 x 1 x 3 d x \int \frac{1x}{1x^3}\,{\rm d}x ∫1x31x​dx ∫ 1 x ( 1 x ) ( 1 − x x 2 ) d x ( 1 ) \int \frac{1x}{(1x)(1-xx^2)}\,{\rm d}x(1) ∫(1x)(1−xx2)1x​dx(1) ∫ 1 x 2 − x 1 d x ( 2 ) \int \frac{1}{x^2-x1} \,{\rm d}x(2)…

Windows安装rabbitmq

Windows安装rabbitmq 一、下载1、下载erlang2、下载rabbitmq 二、安装1、安装erlang2、安装rabbitmq3、简单使用 一、下载 1、下载erlang 点击右侧下载地址&#xff0c;跳转下载&#xff0c;点击下载 跳转后&#xff0c;点击download windows install即可下载。 2、下载rab…

14-6-进程间通信-信号量

前面学习了pipe,fifo,共享内存&#xff0c;信号。 本章将讲述信号量。 一、什么是信号量/信号量集&#xff1f; 1.什么是信号量 信号量是一个计数器。信号量用于实现进程间的同步和互斥。而可以取多个正整数的信号量被称为通用信号量。 对信号量的使用场景的解读 房间&#…

手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)

短信验证码登录功能 项目分析核心代码1.外部js库调用2.HTML容器构建3.javaScript业务逻辑验证4.后端验证逻辑 总结 短信验证码是通过发送验证码到手机的一种有效的验证码系统&#xff0c;作为比较准确和安全地保证购物的安全性&#xff0c;验证用户的正确性的一种手段&#xff…

Linux学习[8]文件权限深入2 默认权限umask SUID/SGID/SBIT file指令

文章目录 前言1. 默认权限umask1.1 默认权限含义1.2 查看默认权限1.3 默认权限在文件与目录的异同 2. 特殊权限2.1 SUID2.2 SGID2.3 SBIT2.4 SUID/SGID/SBIT 权限设置2.4.1 数字法2.4.2 符号法 3. file指令 前言 在linux学习6里面&#xff0c;通过ls -al命令列出文件的所有详细…