Medium
You are given an integer array nums
. You are initially positioned at the array’s first index, and each element in the array represents your maximum jump length at that position.
Return true
if you can reach the last index, or false
otherwise.
Example 1:
Input: nums = [2,3,1,1,4]
Output: true
Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.
Example 2:
Input: nums = [3,2,1,0,4]
Output: false
Explanation: You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index.
Constraints:
1 <= nums.length <= 104
0 <= nums[i] <= 105
To solve the “Jump Game” problem in Java with the Solution class, follow these steps:
canJump
in the Solution
class that takes an integer array nums
as input and returns a boolean indicating whether it’s possible to reach the last index.maxReach
to keep track of the maximum index that can be reached.nums
from index 0
to nums.length - 1
:
i
is greater than maxReach
. If it is, return false
as it’s not possible to reach the last index.maxReach
as the maximum of maxReach
and i + nums[i]
, which represents the furthest index that can be reached from the current position.nums
, return true
as it’s possible to reach the last index.Here’s the implementation of the canJump
method in Java:
class Solution {
public boolean canJump(int[] nums) {
if (nums == null || nums.length == 0) {
return false;
}
int maxReach = 0;
for (int i = 0; i < nums.length; i++) {
if (i > maxReach) {
return false;
}
maxReach = Math.max(maxReach, i + nums[i]);
if (maxReach >= nums.length - 1) {
return true;
}
}
return false;
}
}
This implementation efficiently determines whether it’s possible to reach the last index in the given array nums
using a greedy approach, with a time complexity of O(n).