1. 程式人生 > 其它 >LeetCode No45. 跳躍遊戲 II

LeetCode No45. 跳躍遊戲 II

題目

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

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

你的目標是使用最少的跳躍次數到達陣列的最後一個位置。

假設你總是可以到達陣列的最後一個位置。

示例 1:

輸入: nums = [2,3,1,1,4]
輸出: 2
解釋: 跳到最後一個位置的最小跳躍數是 2。
  從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步到達陣列的最後一個位置。

示例 2:

輸入: nums = [2,3,0,1,4]
輸出: 2

提示:

1 <= nums.length <= 10^4
0 <= nums[i] <= 1000

思路

典型的貪心題,當前在i,所能到的下一步最大能到 i+nums[i],那麼下下一步一定到 i至i+nums[i]中,index+nums[index]最大的位置上。

AC程式碼

點選檢視程式碼
class Solution {
    public int jump(int[] nums) {
        int n = nums.length;
        int pos = 0;
        int cnt = 0;
        int lastIndex = 0;
        for(int i=0; i<n-1; i++) {
            pos = Math.max(pos, i+nums[i]);
            if( i == lastIndex ) {
                lastIndex = pos;
                cnt ++;
            }
        }
        return  cnt;
    }
}