跳躍游戲Ⅱ
中等
給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。
每個元素 nums[i] 表示從索引 i 向前跳轉的最大長度。換句話說,如果你在 nums[i] 處,你可以跳轉到任意 nums[i + j] 處:
0 <= j <= nums[i]
i + j < n
返回到達 nums[n - 1] 的最小跳躍次數。生成的測試用例可以到達 nums[n - 1]。
示例 1:
輸入: nums = [2,3,1,1,4]
輸出: 2
解釋:
跳到最后一個位置的最小跳躍數是 2。
從下標為 0 跳到下標為 1 的位置,跳 1 步,然后跳 3 步到達數組的最后一個位置。
示例 2:
輸入: nums = [2,3,0,1,4]
輸出: 2
思路
首先初始化開始值與結束值,然后開始遍歷,直到遍歷完數組為止不停止,遍歷范圍為start到end之間,并記錄其中之內可移動到的最大值后,將跳躍次數加一,并且把上一次的end賦值給start,將最大的移動位置賦值到end
代碼
class Solution {public int jump(int[] nums) {
int ans = 0;int end = 1;int start = 0;while(end<nums.length){int maxP = 0;for(int i =start;i<end;i++){maxP = Math.max(maxP,i+nums[i]);}start = end;end = maxP+1;ans++;}return ans;}
}