法一(贪心)
/**
* 贪心
*
* @param nums
* @return
*/
public int jump(int[] nums) {
int cnt = 0;
int curCover = 0; // 当前覆盖最远距离下标
int nextCover = 0; // 下一步覆盖最远距离下标
for (int step = 0; step < nums.length - 1; step++) {
nextCover = Math.max(nums[step] + step, nextCover); // 更新下一步覆盖最远距离下标
if (step == curCover) { // 移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离
curCover = nextCover; // 更新当前覆盖最远距离下标
cnt++;
}
}
return cnt;
}
本地测试
/**
* 45. 跳跃游戏 II
*/
lay.showTitle(45);
Solution45 sol45 = new Solution45();
int[] nums45 = new int[]{2,3,1,1,4};
System.out.println(sol45.jump(nums45));