法一
/**
* 贪心
*
* @param nums
* @return
*/
public boolean canJump(int[] nums) {
if (nums.length == 1) {
return true;
}
int cover = nums[0];
for (int step = 0; step <= cover; step++) {
cover = Math.max(nums[step] + step, cover); // 更新下一步覆盖最远距离下标
if (cover >= nums.length - 1) { // 说明可以覆盖到终点了
return true;
}
}
return false;
}
本地测试
/**
* 55. 跳跃游戏
*/
lay.showTitle(55);
Solution55 sol55 = new Solution55();
int[] nums55 = new int[]{2,3,1,1,4};
System.out.println(sol55.canJump(nums55));