function canJump(nums: number[]): boolean {
// Initialize the farthest reachable index to be the first index
let maxReachable: number = 0;
// Iterate over the array
for (let i = 0; i < nums.length; i++) {
// If the current index is greater than the maximum reachable index, we cannot reach this point
if (i > maxReachable) {
return false;
}
// Update the maximum reachable index
maxReachable = Math.max(maxReachable, i + nums[i]);
// If the maximum reachable index is at or beyond the last index, return true
if (maxReachable >= nums.length - 1) {
return true;
}
}
// If we finish iterating through the array without returning true, it means we cannot reach the end
return false;
}