文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 贪心
    • 2.2 BFS

1. 题目

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

示例:输入: [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置假设你总是可以到达数组的最后一个位置。

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

类似题目 LeetCode 55 跳跃游戏

2. 解题

相关题目:
LeetCode 55. 跳跃游戏(贪心)
LeetCode 1306. 跳跃游戏 III(广度优先搜索BFS)
LeetCode 1345. 跳跃游戏 IV(BFS)
LeetCode 1340. 跳跃游戏 V(DP)
LeetCode LCP 09. 最小跳跃次数

2.1 贪心

  • 当前可达的最远下标设一个标记 reach
  • 在到达 reach 的过程中,不断更新 maxs(可到达的最远下标)
  • 当到达 reach 时,step+1,reach 更新为最大的 maxs
class Solution {public:int jump(vector<int>& nums) {int steps = 0, i, reach = 0, maxs = 0;for(i = 0; i < nums.size()-1; ++i){maxs = max(maxs,nums[i]+i);if(i == reach){++steps;reach = maxs;}}return steps;}
};

2.2 BFS

class Solution {public:int jump(vector<int>& nums) {queue<int> q;//idxint i, size, step = 0, tp, maxIdx = 0, nextIdx, n = nums.size();q.push(0);while(!q.empty()){size = q.size();while(size--){tp = q.front();if(tp >= n-1)return step;nextIdx = min(n-1,max(maxIdx, tp+nums[tp]));q.pop();for(i = maxIdx+1; i <= nextIdx; ++i)q.push(i);maxIdx = nextIdx;}step++;}return step;}
};

16 ms 8.4 MB

LeetCode 45. 跳跃游戏 II(贪心/BFS,难)相关推荐

  1. 162. Leetcode 45. 跳跃游戏 II (贪心算法-贪心区间)

    class Solution:def jump(self, nums: List[int]) -> int:if len(nums) == 1:return 0# 记录走的最大步数.当前覆盖最远 ...

  2. Leetcode 45. 跳跃游戏 II

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

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

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

  4. LeetCode 45.跳跃游戏II

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

  5. leetcode 45.跳跃游戏 II

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

  6. leetcode 45跳跃游戏II

    跳跃游戏II 核心思想:当前范围内走不到目的地,更新下一个范围.下一个范围是当前范围内能走到的最远点 class Solution {public:int jump(vector<int> ...

  7. leetcode —— 45. 跳跃游戏 II

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

  8. leetcode 45. 跳跃游戏 II 思考分析

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

  9. Leetcode 45. 跳跃游戏 II (每日一题 20210922)

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

最新文章

  1. 易企秀更换模板里的音乐_易企秀黄金:探索中国 SaaS 企业走向成功的路径
  2. ArcGIS Server开发教程系列(3)切片
  3. JuJu团队12月28号工作汇报
  4. ios开发 方形到圆的动画_画个圆动画,的两种实现。iOS 动画由很浅,入浅,当然是 Swift...
  5. go语言连接redis(已测试)
  6. 朴素贝叶斯--文档分类
  7. 死锁的代码产生及必要条件与预防
  8. CentOS 7.4安装postgresql96
  9. 05-Servlet与内部加载机制(part1)
  10. kNN算法__手写识别——基于Python和NumPy函数库
  11. 异步promise、Async/await介绍
  12. Oracle merge into用法以及相关例子示例
  13. IOMMU之Interrupt Remapping
  14. python random模块随机抽样专题
  15. C语言 找数字,用(折半查找法或二分查找法)
  16. [SQL注入][强网杯 2019]随便注(三种姿势)
  17. 由可乐加比萨化学反应引发的联想
  18. java dog cat animal,理解Java的多态
  19. c语言 cdma编码正交的8位码片,关于码分多址CDMA正交码片序列的进一步说明
  20. 厉害,竟然把VSCode玩成了IDEA的效果,有点哇塞

热门文章

  1. 双目视觉几何框架详解(玉米专栏8篇汇总)
  2. canny算子的理论分析
  3. insert mysql后加where,如何在MySQL Insert語句中添加where子句?
  4. 网络:传输层 TCP报文格式解析
  5. 上机环境是什么意思_Python能不能自学,可以找到什么工作?
  6. RabbitMQ 示例-生产者-消费者-direct-topic-fanout
  7. 记录上一个项目踩过的坑
  8. .NET面试题系列(七)IIS
  9. oracle中scott/tiger、sys、SYSDBA、system都是什么用
  10. 8.0/9.0 Email 设置