【力扣-动态规划入门】【第 4 天】45. 跳跃游戏 II
标题:45. 跳跃游戏 II
难度:中等
天数:第4天,第2/2题
给你一个非负整数数组
nums
,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
假设你总是可以到达数组的最后一个位置。
示例 1:
输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是2
。
从下标为 0 跳到下标为 1 的位置,跳1
步,然后跳3
步到达数组的最后一个位置。
示例 2:
输入: nums = [2,3,0,1,4]
输出: 2
提示:
1 <= nums.length <= 104
0 <= nums[i] <= 1000
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
- 使用dp记录需要多少步
//记录需要步数int dp = 0;
- 使用 step 记录能走到的距离,初始0
//能走到的距离int step = 0;
- 使用maxStep 记录能走的最远距离
//能走到的最远距离int maxStep = dp;
- 如果
maxStep+
已经可以到达最后位置,那么dp+1,
返回dp
if(maxStep >= n-1){//如果可以到达最终位置dp++;return dp;}
- 每次都走完
step
,dp+1
, 然后记录这过程中出现的最远距离maxStep
if(step == i){//如果已经走到,步数+1,并将最大可走距离赋值给stepdp++;step = maxStep;}
- 针对只有一个元素的情况特殊处理
if(n == 1){return 0;}
完整代码:
class Solution {//动态规划入门 第 4 天public int jump(int[] nums) {int n = nums.length;if(n == 1){return 0;}//记录需要步数int dp = 0;//能走到的距离int step = 0;//能走到的最远距离int maxStep = dp;for(int i = 0 ; i < n ;i++){maxStep = Math.max(maxStep,nums[i] + i);if(maxStep >= n-1){//如果可以到达最终位置dp++;return dp;}if(step == i){//如果已经走到,步数+1,并将最大可走距离赋值给stepdp++;step = maxStep;}}//返回记录的步数return dp;}
}
【力扣-动态规划入门】【第 4 天】45. 跳跃游戏 II相关推荐
- 力扣动态规划入门21天刷题计划(共计46题)
刷题地址:https://leetcode-cn.com/study-plan/dynamic-programming/?progress=8e97f6 动态规划常常适用于有重叠子问题和最优子结构性质 ...
- 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间
本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...
- 45. 跳跃游戏 II golang 动态规划
45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [ ...
- Leetcode-D21-动态规划(二刷)-55. 跳跃游戏45. 跳跃游戏 II
我导好好啊!!!刚找完他!充满动力,给个大标题! 55. 跳跃游戏 1.感觉不像是一道很明显的动态规划问题. 2.看下答案和自己的思路是否一致.和我的想法一下,敲代码叭! 3.通过了,但这次好慢呀 c ...
- LeetCode 45.跳跃游戏II
45.跳跃游戏 II 题目描述 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. ...
- _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II
_28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...
- Leetcode 45. 跳跃游戏 II
Leetcode 45. 跳跃游戏 II 题目 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组 ...
- leetcode 45. 跳跃游戏 II 46. 全排列
leetcode 45. 跳跃游戏 II 46. 全排列 45. 跳跃游戏 II 难度中等1273收藏分享切换为英文接收动态反馈 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中 ...
- leetcode 45.跳跃游戏 II
一.题意 给出一个非负整数数组 nums ,数组中的每个元素代表在该位置可以跳跃的最大长度.使用最少的跳跃次数到达数组的最后一个位置.假设总是可以到达数组的最后一个位置. 二.解法 贪心算法. 解法一 ...
- 代码随想录算法训练营第三十二天_第八章_贪心算法 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
LeetCode 122.买卖股票的最佳时机II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票 ...
最新文章
- (C++)1011 World Cup Betting
- windows下使用GIT下载ANDROID源码
- JavaWeb学习之路——SSM框架之SpringMVC(七)
- React.js 2016 最佳实践 徬梓阅读 1584收藏 71
- java mybatis XML文件中大于号小于号转义(转载)
- 现代IM系统中消息推送和存储架构的实现
- C/C++:Windows编程—创建进程、终止进程、枚举进程、枚举线程、枚举DLL
- 第一天 学习前的准备
- springsecurity 认证之密码模式
- JVM初识之垃圾回收机制(GC)
- nx编译安装车牌检测库hyperlpr
- 身份证校验码计算:根据身份证前17位计算第18位校验码-c++实现
- python sqlite3加密_sqlite3加密
- 前缀im-,in-,il-,ir-的使用规律
- 混淆矩阵 Confusion Matrix
- 小福利,用Excel VBA编程制作一个变色小游戏
- vscode +git diff 快速定位修改差异
- \u5b57\u7b26 字符转换 (Unicode字符与中文的相互转化)
- 1110 区块反转 – PAT乙级真题
- 小目标检测的数据增强------Stitcher和Mosaic效果对比