LeetCode 55.跳躍遊戲 貪心演算法
阿新 • • 發佈:2018-11-14
給定一個非負整數陣列,你最初位於陣列的第一個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後一個位置。
示例 1:
輸入: [2,3,1,1,4] 輸出: true 解釋: 從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後一個位置。
示例 2:
輸入: [3,2,1,0,4] 輸出: false 解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後一個位置
中等難度題,結果做的時間比跳躍遊戲II(Hard)的時間還長。。。主要是注意if條件的判斷時機
class Solution { public boolean canJump(int[] nums) { // 找出每次跳的最大位置,若小於len-1且某一步該位置為0則false int len=nums.length; if(len==1 && nums[0]==0) return true; for(int i=0;i<len;){ if(nums[i]==0) return false; int max=i+nums[i]; int max_index=i; if(max>=len-1) return true; for(int j=i+1;j<=i+nums[i];j++){ // 選出最大位置 if(j+nums[j]>=max){ max=j+nums[j]; max_index=j; } } if(max>=len-1) return true; i=max_index; } return true; } }