leetcode746. 使用最小花费爬楼梯
一:题目
二:上码
class Solution {public:/**思路:1.分析题意给出的数组的下标代表楼梯的台阶数2.动态规划五步走1>:确定dp数组以及下标的含义dp[i]:表示到达第i层所需要花费的体力2>:确定dp数组的递推公式那么如何得到dp[i](花费的体力)呢?dp[i]由dp[i-1]或者dp[i-2]可以得到,但是我们需要在其中选取一个小的dp[i] = min(dp[i-1],dp[i-2]) + cost[i];为甚要加上cost[i],题目中给出了,我们每到一个台阶的话,需要支付cost[i]才能继续向上爬3>:确定dp数组的初始化cost.size() == 2那么的话,可以直接一步到楼顶(那就不用花费),也可以从0开始dp[0] = cost[0],然后再来一步到达楼顶 那就直接返回dp[0]和dp[1]中比较小的那个 (如果这个size() == 2) cost.size() > 2dp[0] = cost[0];dp[1] = cost[1];4>:确定dp数组的遍历顺序这个肯定也是需要从前往后遍历,因为我们需要前面花费的体力5>:举例验证cost = [10,15,2,10]dp[3] = min(dp[2],dp[1]) (这里不用加上cost[3],因为最后一步就直接登顶了)dp[2] = min(dp[1],dp[0]) + cost[2]; **/int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int>dp(n+1);dp[0] = cost[0];dp[1] = cost[1];if(n == 2) return min(dp[0],dp[1]);for(int i = 2; i <= n; i++) {if(i == n){//最后一步是直接到达楼顶的,不需要计算楼顶那层的自己的费用dp[i] = min(dp[i-1],dp[i-2]);}else{dp[i] = min(dp[i-1],dp[i-2]) + cost[i];}}return dp[n];}
};
leetcode746. 使用最小花费爬楼梯相关推荐
- LeetCode-动态规划基础题-746. 使用最小花费爬楼梯
描述 746.使用最小花费爬楼梯 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始). 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应 ...
- LeetCode Algorithm 746. 使用最小花费爬楼梯
746. 使用最小花费爬楼梯 Ideas 首先确定题目类型,爬楼梯问题,并且给定了状态转移的限制,其实就已经可以确定状态转移方程了. 然后题目说可以从下标为0或下标为1的台阶开始爬,所以我们可以定义两 ...
- 算法题目——使用最小花费爬楼梯(动态规划)
题目链接:746.使用最小花费爬楼梯 方法:动态规划 假设数组cost的长度为n,则n个阶梯分别对应下标0到n- 1,楼层顶部对应下标n,问题等价于计算达到下标n的最小花费.可以通过动态规划求解. 创 ...
- 746. 使用最小花费爬楼梯 golang 动态规划
746. 使用最小花费爬楼梯 746. 使用最小花费爬楼梯 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以 ...
- leetcode - 746. 使用最小花费爬楼梯
746. 使用最小花费爬楼梯 -------------------------------------- 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i] (索引 ...
- 动态规划——使用最小花费爬楼梯(Leetcode 746)
题目选自Leetcode 746.使用最小花费爬楼梯 题目描述: 解题代码:C语言 int minCostClimbingStairs(int* cost, int costSize) {int pr ...
- 746.使用最小花费爬楼梯
使用最小花费爬楼梯 方法一: class Solution {public int minCostClimbingStairs(int[] cost) {if (cost == null || cos ...
- D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
DP理论基础 重要知识点: 1.动规和贪心的区别:动规是由前一个状态推导出来的,而贪心是局部直接选最优的 2.动规五部曲: 1)确定dp数组(dp table)以及下标的含义 2)确定递推公式 3)d ...
- [每日一题]746. 使用最小花费爬楼梯
[每日一题]746. 使用最小花费爬楼梯 数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯 ...
最新文章
- s1200 博图高速脉冲计数值没有变化_赤峰发泡硅胶板,高速公路橡胶垫橡胶厂-京品吉...
- 机房日常技术总结——Windows篇
- HashTable类模板_C++
- iOS开发Objective-C基础之──多态
- 现在很多公司都在辞退年龄超过35岁以上的员工,原因到底为什么?
- OpenAI 将 k8s 扩展至 7500 个节点以支持机器学习
- 英语总结系列(二十二):Baby偶遇GCT
- C/C++ 获取本地日期时间常见方法
- javax.servlet.http.HttpServletResponse接口(HTTP版本)
- lj245a引脚功能图_lm324工作原理_引脚图功能_特性参数_内部电路及应用电路
- 金融应用,计算酬金 Exercise06_11
- let和expr的区别
- linux系统fasta程序,Linux生信练习2--fastq/fasta
- 基于51单片机的温湿度检测及调节系统
- ESP32-NVS存储(非易失性存储库)
- Hi3531 平台开发,Hi3532 平台开发
- 多种方法解决计算机程序中出现.DLL文件丢失的问题
- NASA Panoply读取netcdf画图
- AC_AttitudeControl_Heli.cpp的AC_PosControl::set_dt函数代码分析
- cv2.polylines()
热门文章
- JWT【JSON Web Token】 简述
- java excutorthread_Java中ThreadPoolExecutor的参数理解
- 【QGIS入门实战精品教程】5.1:QGIS地理坐标转火星坐标系(GCJ02)案例教程
- 【专升本计算机】最新甘肃省专升本考试C语言部分复习题带答案
- 回溯算法之布罗夫卫队(最大团问题)
- linux之用2张图片描述vim常见命令
- 由于未分配内存的指针导致段错误
- Android之基于BaseAdapter和SimpleAdapter的GridView
- Android之项目中如何用好构建神器Gradle?
- 使用VS开发C++ 控制台程序或其他项目出现 ‘ LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib” ’ 常规解决办法