leetcode —— 45. 跳跃游戏 II
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
示例:
输入: [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相关推荐
- Leetcode 45. 跳跃游戏 II
Leetcode 45. 跳跃游戏 II 题目 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组 ...
- leetcode 45. 跳跃游戏 II 46. 全排列
leetcode 45. 跳跃游戏 II 46. 全排列 45. 跳跃游戏 II 难度中等1273收藏分享切换为英文接收动态反馈 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中 ...
- LeetCode 45.跳跃游戏II
45.跳跃游戏 II 题目描述 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. ...
- leetcode 45.跳跃游戏 II
一.题意 给出一个非负整数数组 nums ,数组中的每个元素代表在该位置可以跳跃的最大长度.使用最少的跳跃次数到达数组的最后一个位置.假设总是可以到达数组的最后一个位置. 二.解法 贪心算法. 解法一 ...
- LeetCode 45. 跳跃游戏 II(贪心/BFS,难)
文章目录 1. 题目 2. 解题 2.1 贪心 2.2 BFS 1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的 ...
- leetcode 45跳跃游戏II
跳跃游戏II 核心思想:当前范围内走不到目的地,更新下一个范围.下一个范围是当前范围内能走到的最远点 class Solution {public:int jump(vector<int> ...
- Leetcode 45. 跳跃游戏 II (每日一题 20210922)
给你一个非负整数数组 nums ,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.你的目标是使用最少的跳跃次数到达数组的最后一个位置.假设你总是可以到达数组的最后一个位置 ...
- leetcode 45. 跳跃游戏 II 思考分析
题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [2,3,1,1,4 ...
- LeetCode 45. 跳跃游戏 II Jump Game II
给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [2,3,1,1,4] 输 ...
最新文章
- python一次性读取整个文件-python逐行读取文件内容的三种方法
- destoon代码从头到尾捋一遍
- React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(一)
- 一个内核网络漏洞详解|容器逃逸
- $.countdown is not a function
- 看新排美国话剧《哗变》
- WEB API 系列(二) Filter的使用以及执行顺序
- 世界上最长的博士论文,列入吉尼斯世界纪录
- tp5中php正则怎么写,详解tp5中phpmailer的使用
- python16进制字节序_Python-十六进制数据传递与接收
- C++命名空间和头文件的关系 例如已经使用了#includestring,为什么还要 using std::string?...
- 解决办法:syslinux:Accessing physical drive
- github竟然挂掉?那么多顶级牛人……
- 28_多易教育之《yiee数据运营系统》附录:扩展知识点汇总系列一
- Python 爬虫:专利信息
- flask-uploads 使用报错处理 “IMPORTERROR: CANNOT IMPORT NAME ‘SECURE_FILENAME‘ FROM ‘WERKZEUG‘“
- 通过时间序列分析预测未来广州的空气质量指数变化
- 千万别惹程序员,否则他会在代码注释里告诉这家公司有多坑
- 在线IDE- Gitpod介绍
- 关于洗地机电池容量问题,你怎么看