2025-3-11-leetcode刷题情况贪心算法-区间问题
目录
2025-3-11 leetcode刷题情况(贪心算法–区间问题)
1.题目描述
2.代码
3.思路
跳跃覆盖范围究竟可不可以覆盖到终点
如果数组长度为 1,说明已经在终点,直接返回
true
。定义一个变量
coverRange
并初始化为 0,表示当前能够到达的最远位置。从数组的第一个位置开始遍历,只要当前位置
i
在覆盖范围
coverRange
内,就继续遍历。在遍历过程中,不断更新覆盖范围,取当前覆盖范围
coverRange
和
i + nums[i]
中的较大值作为新的覆盖范围。这是因为从位置
i
出发,最远可以到达
i + nums[i]
的位置。在每次更新覆盖范围后,检查覆盖范围是否已经能够到达数组的最后一个位置(即
coverRange >= nums.length - 1
),如果可以,则返回
true
。如果遍历结束后都没有到达终点,说明无法到达,返回
false
。
1.题目描述
2.代码
3.思路
初始化
result
为 0,用于记录跳跃次数;
end
为 0,代表当前覆盖的最远距离下标;
temp
为 0,代表下一步覆盖的最远距离下标。
在
i
不超过
end
且
end
未到达数组末尾时进行遍历。在遍历过程中,不断更新
temp
,取
temp
和
i + nums[i]
中的最大值,因为
i + nums[i]
表示从位置
i
出发能到达的最远位置。
当
i
等于
end
时,意味着当前跳跃范围已遍历完,此时将
end
更新为
temp
,表示到达了下一个能覆盖的最远位置,同时
result
加 1,记录一次跳跃。
遍历结束后,
result
即为从起点到终点所需的最少跳跃次数。