题目描述

题解(贪心算法)
思路

解析1

代码
java
class Solution {
public boolean canJump(int[] nums) {
// 记录当前能跳到的最远下标
int farthest = 0;
for (int i = 0; i < nums.length; i++) {
// 如果当前遍历的下标 i 已经超过了所能到达的最远距离,说明无法继续前进
if (i > farthest) {
return false;
}
// 更新能到达的最远下标
farthest = Math.max(farthest, i + nums[i]);
// 优化:如果最远距离已经可以到达或越过最后一个下标,直接返回 true
if (farthest >= nums.length - 1) {
return true;
}
}
//=========================================
//问题1:这里return逻辑不会被执行,为什么还要写?
//=========================================
return false;
}
}
问题1:这里return逻辑不会被执行,为什么还要写?

复杂度分析
- 时间复杂度: O(N)O(N)O(N),其中 NNN 是数组 nums 的长度。我们只需要遍历一遍数组即可得出结果
- 空间复杂度: O(1)O(1)O(1)。只需要常数级别的额外空间来存储 farthest 变量