leetcode-45.跳跃游戏II

题很简单,怎么少点写代码比较困难。

这题很明显贪心算法,每次跳跃我们都希望理论上能到达的地方更远。一开始站在初始点,那么可选范围就是0到nums[0],在这里面找能跳得最远的点i,接下来遍历nums[0]+1到 i+nums[i],这是下一个可选范围,仍然找能跳的最远的点j。

可以发现,遍历一次就够。跳多少次怎么判断?我们需要遍历的时候保存当前可选范围和跳跃最远范围,当遍历到可选范围边界了,说明得从刚才的点里能跳的最远的地方跳一次了,此时jump+=1,可选范围更新。

由于遍历总是在可选范围里(每次要超出可选范围了,都会更新可选范围),所以如果在可选范围未到终点时,如果发现某一步能到达终点,就可以停止遍历了,直接jump+1返回

python 复制代码
class Solution:
    def jump(self, nums: List[int]) -> int:
        jump = 0
        cur_right = 0 
        next_right = 0 
        for i in range(len(nums)-1):
            next_right = max(next_right, i+nums[i])
            if next_right >= len(nums)-1:
            	return jump+1
            if i == cur_right:
                cur_right = next_right 
                jump+= 1 
        return jump
相关推荐
SamsongSSS4 分钟前
JavaScript逆向SM国密算法
javascript·算法·逆向
图灵信徒7 分钟前
2025 ICPC Gran Premio de Mexico 3ra Fecha
c++·算法·codeforcrs
大锦终8 分钟前
【算法】栈专题
数据结构·c++·算法·leetcode
haogexiaole9 分钟前
资源图分配算法
算法
天选之女wow12 分钟前
【代码随想录算法训练营——Day6(Day5周日休息)】哈希表——242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和
数据结构·算法·leetcode·散列表
寒冬没有雪13 分钟前
利用归并算法对链表进行排序
c++·算法
CoovallyAIHub14 分钟前
AI帮你打标签!这个开源神器让数据标注快了90%
深度学习·算法·计算机视觉
古译汉书14 分钟前
蓝桥杯算法之基础知识(7)---排序题的快排和归并排序
算法
薛定谔的算法20 分钟前
JavaScript队列实现详解:从基础到性能优化
javascript·数据结构·算法
pan0c2320 分钟前
机器学习 之 时间序列预测 的 电力负荷预测案例
人工智能·算法·机器学习