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

假设你总是可以到达数组的最后一个位置。

正向查找可到达的最大位置

如果我们「贪心」地进行正向查找,每次找到可到达的最远位置,就可以在线性时间内得到最少的跳跃次数。

在具体的实现中,我们维护当前能够到达的最大下标位置,记为边界。我们从左到右遍历数组,到达边界时,更新边界并将跳跃次数增加 1。

在遍历数组时,我们不访问最后一个元素,这是因为在访问最后一个元素之前,我们的边界一定大于等于最后一个位置,否则就无法跳到最后一个位置了。如果访问最后一个元素,在边界正好为最后一个位置的情况下,我们会增加一次「不必要的跳跃次数」,因此我们不必访问最后一个元素。

class Solution:def jump(self, nums):n = len(nums)maxPos, end, step = 0, 0, 0for i in range(n - 1):if maxPos >= i:maxPos = max(maxPos, i + nums[i])if i == end:end = maxPosstep += 1return step
输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

跳子游戏--最少跳跃次数相关推荐

  1. LeetCode 1654. 到家的最少跳跃次数(BFS)

    文章目录 1. 题目 2. 解题 1. 题目 有一只跳蚤的家在数轴上的位置 x 处.请你帮助它从位置 0 出发,到达它的家. 跳蚤跳跃的规则如下: 它可以 往前 跳恰好 a 个位置(即往右跳). 它可 ...

  2. 跳跃游戏2(求最少跳跃次数)Python解法

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

  3. 贪心:jump 游戏(获取最少跳跃的次数以及跳跃路径)

    一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个 位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置,返回最少 ...

  4. 贪心法—— LeetCode45 跳跃游戏II(跳跃游戏进阶版)

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

  5. LeetCode 2139. 得到目标值的最少行动次数(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 你正在玩一个整数游戏.从整数 1 开始,期望得到整数 target . 在一次行动中,你可以做下述两种操作之一: 递增,将当前整数的值加 1(即, x = ...

  6. 力扣276 周赛 2139. 得到目标值的最少行动次数

    2139. 得到目标值的最少行动次数 题目描述: 你正在玩一个整数游戏.从整数 1 开始,期望得到整数 target . 在一次行动中,你可以做下述两种操作之一: 递增,将当前整数的值加 1(即, x ...

  7. LeetCode简单题之使每位学生都有座位的最少移动次数

    题目 一个房间里有 n 个座位和 n 名学生,房间用一个数轴表示.给你一个长度为 n 的数组 seats ,其中 seats[i] 是第 i 个座位的位置.同时给你一个长度为 n 的数组 studen ...

  8. POJ2431贪心(最少加油次数)

    题意:        给一个终点,然后给你一个卡车距离终点的距离,还有其他个加油站距离终点的距离,然后每走一个单位距离要花费一个单位油,卡车的邮箱是无限大的,而每个加油站的油量是有限的,整个路径是一个 ...

  9. 1049-飞机最少换乘次数问题

    描述 设有n个城市,编号为0-n-1,m条单向航线的起点和终点由输入提供,寻找一条换乘次数最少的线路方案. 输入 第一行为三个整数n.m.v,表示城市数.单向航线数和起点城市.以下m行每行两个整数,表 ...

最新文章

  1. python括号配对问题_使用Python的栈实现括号匹配算法
  2. Oracle修改监听IP地址
  3. 【深度学习】医学图像处理之视杯视盘分割调研分析
  4. 有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取...
  5. 记一次Oracle数据故障排除过程
  6. 算法优化:动态规划加速,货物运输问题,四边形不等式, 从O(n^2)到O(n^3)
  7. Android ViewFlipper实现多个布局手势切换的效果
  8. 静态路由与动态路由概念及实例
  9. 【Ubuntu-Opencv】Ubuntu14.04 Opencv3.3.0 使用中出现OpenCV Error: Unspecified error
  10. 魔方财务对接码支付插件
  11. Oracle 客户端连接server 的方法
  12. sysbench线程数_分享3个Sysbench性能压测脚本及多并发压测过程
  13. 显示器用软件调整亮度_如何使用正确的软件调整电脑显示器的亮度
  14. MSP430G2553学习笔记
  15. (附源码)node.js游云旅游网站 毕业设计 231547
  16. mysql查看分片键
  17. 关于MAXIMO数据限制代码的理解
  18. Ubuntu 18.04 安装 NVIDIA 显卡驱动
  19. 计算机桌面怎么能添加文字,如何实现在电脑桌面上添加文字提醒
  20. pcd,obj,mtl文件格式解析

热门文章

  1. BI平台redash使用
  2. MyBatis多表关联查询
  3. 创维E900-S-非高安_HI3798MV100_免拆或拆机短接强刷-当贝桌面卡刷固件包
  4. C 语言 —— 函数定义和函数声明
  5. 【Excel】数据分析工具库
  6. 名帖192 米芾 行书《张季明帖(三帖卷)》
  7. C语言北京冬奥会比赛排名系统
  8. 好节目推荐---我爱记歌词
  9. matlab详解newff(前馈反向传播网络)
  10. 在浏览器中使用VLC插件实现播放RTSP流视频