思路:跳几步无所谓,关键在于可跳的覆盖范围!不一定非要明确一次究竟跳几步,每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围。这个范围内,别管是怎么跳的,反正一定可以跳过来。问题就转化为跳跃覆盖范围究竟可不可以覆盖到终点!
算法步骤:每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围。贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。
class Solution {
//跳跃覆盖范围究竟可不可以覆盖到终点?
public boolean canJump(int[] nums) {
int cover = 0;
if(nums.length == 1) return true;
for(int i = 0; i <= cover; i++){
cover = Math.max(cover, i+num[i]);
if(cover >= nums.length - 1) return true;
}
return false;
}
}

本文介绍了如何使用贪心算法解决跳跃游戏问题,关键在于每次选取最大跳跃步数以扩大覆盖范围。算法步骤包括每次移动取最大跳跃值,更新覆盖范围,并检查是否能到达终点。通过这种方式,可以判断跳跃覆盖范围是否足以覆盖整个数组直至终点。
910

被折叠的 条评论
为什么被折叠?



