题目:
题解:
- 如果起跳点的格子可以跳跃的距离是 x,那么表示后面 x 个格子都可以跳跃
- 对每一个能跳跃的格子都尝试跳一次,把能跳到最远的距离不断更新
- 如果可以跳到最后,就算成功
贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),
整体最优解:最后得到整体最大覆盖范围,看是否能到终点。
public boolean canJump(int[] nums) {
if (nums.length == 1) {
return true;
}
int cover = 0;
for (int i = 0; i <= cover; i++) {
cover = Math.max(cover, i+nums[i]);
if (cover >= nums.length-1) {
return true;
}
}
return false;
}
时间复杂度:O(N)