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

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

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

示例:

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

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

————————————
解题思路:
(1)使用贪心算法;

(2)使用max_pos保存当前步所能到达的最远距离,比如例子中的nums[0]表示从index=0的位置所能到达的最远距离为index=2,这时候走了一步,使用step记录走的步数,step=1;

(3)在nums[1-2]的距离内,记录在num[1-2]所能到达的最远距离,由例子可以知道,nums[1-2]能到达的最远距离为index=4,也就是到达index=4的位置所需要的最少步数为step=2;因为index=4为数组的最后一位,因此可以返回2作为结果;

其Python3代码如下:

# Python3
class Solution:def jump(self, nums: List[int]) -> int:n = len(nums)# maxPos用于保存当前nums[,end]所能到达的最远距离;# step用于记录最大步数maxPos, end, step = 0, 0, 0for i in range(n - 1):# end是当前step的最远距离if i <= end: # 更新当前nums[:end]可以到达的最远距离maxPosmaxPos = max(maxPos, i + nums[i])# 当到达边界,则更新下一步的边界,并更新步数if i == end:end = maxPosstep += 1return step

其C++代码如下:

class Solution {public:int jump(vector<int>& nums) {int length = nums.size();int max_pos = 0;int end = 0;int time = 0;for(int i=0;i<length-1;++i){if(i<=end){max_pos = max(max_pos,nums[i]+i);if(i==end){end = max_pos;time++;}}}return time;}
};

代码时间复杂度为O(n),n为数组长度;空间复杂度为O(1);

leetcode —— 45. 跳跃游戏 II相关推荐

  1. Leetcode 45. 跳跃游戏 II

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

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

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

  3. LeetCode 45.跳跃游戏II

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

  4. leetcode 45.跳跃游戏 II

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

  5. LeetCode 45. 跳跃游戏 II(贪心/BFS,难)

    文章目录 1. 题目 2. 解题 2.1 贪心 2.2 BFS 1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的 ...

  6. leetcode 45跳跃游戏II

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

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

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

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

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

  9. LeetCode 45. 跳跃游戏 II Jump Game II

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

最新文章

  1. python一次性读取整个文件-python逐行读取文件内容的三种方法
  2. destoon代码从头到尾捋一遍
  3. React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(一)
  4. 一个内核网络漏洞详解|容器逃逸
  5. $.countdown is not a function
  6. 看新排美国话剧《哗变》
  7. WEB API 系列(二) Filter的使用以及执行顺序
  8. 世界上最长的博士论文,列入吉尼斯世界纪录
  9. tp5中php正则怎么写,详解tp5中phpmailer的使用
  10. python16进制字节序_Python-十六进制数据传递与接收
  11. C++命名空间和头文件的关系 例如已经使用了#includestring,为什么还要 using std::string?...
  12. 解决办法:syslinux:Accessing physical drive
  13. github竟然挂掉?那么多顶级牛人……
  14. 28_多易教育之《yiee数据运营系统》附录:扩展知识点汇总系列一
  15. Python 爬虫:专利信息
  16. flask-uploads 使用报错处理 “IMPORTERROR: CANNOT IMPORT NAME ‘SECURE_FILENAME‘ FROM ‘WERKZEUG‘“
  17. 通过时间序列分析预测未来广州的空气质量指数变化
  18. 千万别惹程序员,否则他会在代码注释里告诉这家公司有多坑
  19. 在线IDE- Gitpod介绍
  20. 关于洗地机电池容量问题,你怎么看

热门文章

  1. Libreoffice实现office转pdf、html、jpg等格式数据
  2. 创建NGINX Plus和NGINX配置文件
  3. Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程
  4. 高级Java开发人员的十大书籍
  5. DataGrip汉化方法
  6. ajax header的bearer token验证
  7. UiPath实践经验总结(二)
  8. leetcode 移动零
  9. ios14系统 GIF图展示异常问题
  10. iphone 2x 3x_iPhone X的未来:从现实到荒诞