給定一個非負整數數組,你最初位于數組的第一個位置。
數組中的每個元素代表你在該位置可以跳躍的最大長度。
你的目標是使用最少的跳躍次數到達數組的最后一個位置。
示例:
輸入: [2,3,1,1,4]
輸出: 2
解釋: 跳到最后一個位置的最小跳躍數是 2。
?? ? 從下標為 0 跳到下標為 1 的位置,跳?1?步,然后跳?3?步到達數組的最后一個位置。
說明:
假設你總是可以到達數組的最后一個位置。
思路:每跳一次,計算能跳的范圍內,能讓下一次跳的最遠的地方。
class Solution {public int jump(int[] nums) {int maxIndex=0;//當前能跳到最遠的地方int ans=0;//答案int len=nums.length;//數組長度if(len==1)return 0;int i=0;while(maxIndex<len-1){ans++;int temp=0;for(int j=i;j<=maxIndex;++j){if(temp<j+nums[j])temp=j+nums[j];}//找到下次能挑到最遠的地方,并賦值。i=maxIndex;maxIndex=temp;}return ans;}
}