2025年- H76-Lc184--55.跳跃游戏(贪心)--Java版
1.题目描述
2.思路
只要是在最大覆盖范围覆盖了,就是覆盖了。
局部最优:每遍历一个元素取它最大的覆盖范围
全局最优:在这个序列里,可以得到最大的覆盖范围。如果覆盖范围能达到最后一个元素,就是全局最优
(1)数组的长度是1,一开始在起始位置,本质上也是在终止位置,所以可以返回true。
3.代码实现
public class H55 {public boolean canJump(int[] nums) {//覆盖范围的下标默认从0开始(起点)int coverIndex=0;//如果数组只有一个元素,说明该元素既是起点,也是终点if(nums.length==1)//也就是不用跳{return true;}for(int i=0;i<nums.length&&i<=coverIndex;i++){//最信的覆盖范围:目前下标去加上自己对应元素的值。//coverIndex代表最大的覆盖范围coverIndex=Math.max(i+nums[i],coverIndex);//如果cover到达终点,或者跳出比终点还远的位置if(coverIndex>=nums.length-1)return true;}//如果一直达到不了终点,游戏终止return false;}public static void main(String[] args){H55 test=new H55();int[] nums={2,3,1,1,4};boolean res=test.canJump(nums);System.out.print(res);}
}