題目原址
解題思路
給定一個數組,數組的下标表示你目前所在的位置,數組中的元素值表示你一次可以最大跳躍的步數,現在假設你在0位置上,判斷是否可以跳到最末尾的位置。
使用貪心算法解決該題。使用兩個指針
temp
和
maxReach
,
temp
用來表示目前位置,
maxReach
用來表示下一步能夠到達的最遠位置。在每次的周遊中都更新
maxReach
的值,以確定
maxReach
的值為每次周遊的最大值。直到周遊到數組末尾。這裡面如果
maxReach
的值超過了數組的長度就說明能夠到達數組的末尾。
AC代碼
class JumpGame {
public boolean canJump(int[] nums) {
int maxReach = ;
int temp = ;
while(temp <= maxReach && temp < nums.length) {
maxReach = Math.max(maxReach, temp + nums[temp]);
temp ++;
}
return maxReach >= nums.length - ;
}
}