1. 程式人生 > 實用技巧 >55. 跳躍遊戲

55. 跳躍遊戲

題目:

給定一個非負整數陣列,你最初位於陣列的第一個位置。

陣列中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最後一個位置。

示例1:

輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3 步到達最後一個位置。

示例2:

輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後一個位置。

程式碼:

 1 class Solution {   
 2     public boolean canJump(int
[] nums) { 3 //特殊情況特殊處理 4 if(nums==null||nums.length==0||nums.length==1) return true; 5 6 //利用陣列記錄此位置是否可以抵達 7 boolean[] res=new boolean[nums.length]; 8 int len; 9 res[0]=true; 10 for(int i=0;i<nums.length;i++){ 11 if
(nums[i]>0) Arrays.fill(res,i+1,Math.min(i+1+nums[i],nums.length),true); 12 } 13 for(boolean b:res){ 14 if(!b) return false; 15 } 16 return true; 17 } 18 }