2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
1.题目描述
2.思路
每次尽可能往远一点跳,就能以最少的步数达到终点。
以最少的步数尽可能的增加覆盖范围,只要覆盖范围把最远的终点覆盖掉,就说明当前的步数可以跳到终点。
每次只记录下一步的最大范围。
3.代码实现
public class H45 {public int jump(int[] nums) {if(nums.length==1)//如果只有1一个元素,说明不用跳(既是终点也是起点)return 0;int cur=0;//当前的覆盖范围的索引,从0开始int next=0;//下一步的覆盖范围int res=0;//记录当前的结果for(int i=0;i<nums.length;i++){next=Math.max(i+nums[i],next);//两两比较,每次保存值最大的那个数,并赋值给nextif(i==cur) {//当前一步的跳跃范围是否已经用完了//当前的位置不是数组的终点位置if (cur != nums.length - 1){res++;//还没到终点位置,结果(步数)+1//把下一步的覆盖范围赋值给当前的复制范围cur=next;if(cur>nums.length-1)break;}else {break;}}}return res;}public static void main(String[] args){H45 test=new H45();int[] nums={2,3,1,1,4};int ans=test.jump(nums);System.out.print(ans);}
}