55.跳躍遊戲
- 跳躍遊戲
難度中等647
給定一個非負整數數組,你最初位於數組的第一個位置。
數組中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後一個位置。
示例 1:
輸入: [2,3,1,1,4] 輸出: true 解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3 步到達最後一個位置。
示例 2:
輸入: [3,2,1,0,4] 輸出: false 解釋: 無論怎樣,你總會到達索引爲 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後一個位置。
貪心
// 貪心算法 從後往前推
// nums[i] + i 表示從當前位置i加上 可以跳躍的最大值
// time : O(n)
public boolean canJump(int[] nums) {
if(nums == null) return false;
int pos = nums.length-1;
for(int i=nums.length-1;i>=0;i--){
if(nums[i]+i >= pos){
pos = i;
}
}
return pos == 0;
}