标题: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)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

  1. 使用dp记录需要多少步
 //记录需要步数int dp = 0;
  1. 使用 step 记录能走到的距离,初始0
 //能走到的距离int step = 0;
  1. 使用maxStep 记录能走的最远距离
 //能走到的最远距离int maxStep = dp;
  1. 如果maxStep+已经可以到达最后位置,那么dp+1,返回dp
 if(maxStep >= n-1){//如果可以到达最终位置dp++;return dp;}
  1. 每次都走完stepdp+1, 然后记录这过程中出现的最远距离maxStep
 if(step == i){//如果已经走到,步数+1,并将最大可走距离赋值给stepdp++;step = maxStep;}
  1. 针对只有一个元素的情况特殊处理
 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相关推荐

  1. 力扣动态规划入门21天刷题计划(共计46题)

    刷题地址:https://leetcode-cn.com/study-plan/dynamic-programming/?progress=8e97f6 动态规划常常适用于有重叠子问题和最优子结构性质 ...

  2. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

  3. 45. 跳跃游戏 II golang 动态规划

    45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [ ...

  4. Leetcode-D21-动态规划(二刷)-55. 跳跃游戏45. 跳跃游戏 II

    我导好好啊!!!刚找完他!充满动力,给个大标题! 55. 跳跃游戏 1.感觉不像是一道很明显的动态规划问题. 2.看下答案和自己的思路是否一致.和我的想法一下,敲代码叭! 3.通过了,但这次好慢呀 c ...

  5. LeetCode 45.跳跃游戏II

    45.跳跃游戏 II 题目描述 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. ...

  6. _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II

    _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...

  7. Leetcode 45. 跳跃游戏 II

    Leetcode 45. 跳跃游戏 II 题目 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组 ...

  8. leetcode 45. 跳跃游戏 II 46. 全排列

    leetcode 45. 跳跃游戏 II 46. 全排列 45. 跳跃游戏 II 难度中等1273收藏分享切换为英文接收动态反馈 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中 ...

  9. leetcode 45.跳跃游戏 II

    一.题意 给出一个非负整数数组 nums ,数组中的每个元素代表在该位置可以跳跃的最大长度.使用最少的跳跃次数到达数组的最后一个位置.假设总是可以到达数组的最后一个位置. 二.解法 贪心算法. 解法一 ...

  10. 代码随想录算法训练营第三十二天_第八章_贪心算法 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

    LeetCode 122.买卖股票的最佳时机II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票 ...

最新文章

  1. (C++)1011 World Cup Betting
  2. windows下使用GIT下载ANDROID源码
  3. JavaWeb学习之路——SSM框架之SpringMVC(七)
  4. React.js 2016 最佳实践 徬梓阅读 1584收藏 71
  5. java mybatis XML文件中大于号小于号转义(转载)
  6. 现代IM系统中消息推送和存储架构的实现
  7. C/C++:Windows编程—创建进程、终止进程、枚举进程、枚举线程、枚举DLL
  8. 第一天 学习前的准备
  9. springsecurity 认证之密码模式
  10. JVM初识之垃圾回收机制(GC)
  11. nx编译安装车牌检测库hyperlpr
  12. 身份证校验码计算:根据身份证前17位计算第18位校验码-c++实现
  13. python sqlite3加密_sqlite3加密
  14. 前缀im-,in-,il-,ir-的使用规律
  15. 混淆矩阵 Confusion Matrix
  16. 小福利,用Excel VBA编程制作一个变色小游戏
  17. vscode +git diff 快速定位修改差异
  18. \u5b57\u7b26 字符转换 (Unicode字符与中文的相互转化)
  19. 1110 区块反转 – PAT乙级真题
  20. 小目标检测的数据增强------Stitcher和Mosaic效果对比

热门文章

  1. Spring读源码系列番外篇04----类型转换--上---老旧的PropertyEditor
  2. 《50个问题吃定所有对手》 博客思听 2011年1月
  3. IE7IE8兼容性设置_服务器端设定
  4. spark初始:spark腾讯雅虎优酷成功应用解析
  5. Excel中使用条件格式(比较两列将内容不同用颜色标识)
  6. 程序员社死瞬间3.0 ……
  7. JavaScript进阶(8)-ES6简介及新增let和const关键字
  8. Hive职位岗位数据分析实战
  9. 阿里云——弹性公网IP
  10. sourcesafe.light 开源项目启动