給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。
示例:輸入: [2,3,1,1,4]
輸出: 2
解釋: 跳到最後乙個位置的最小跳躍數是 2。
從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步到達陣列的最後乙個位置。
說明:假設你總是可以到達陣列的最後乙個位置。
這道題可考慮貪心,來自於這個條件:陣列中的每個元素代表你在該位置可以跳躍的最大長度。這就意味著你能跳的範圍是乙個區間。
題目要求使用最少的跳躍次數到達終點,我們可以貪心地每次都跳最遠的地方。
用[2,3,1,1,4]舉例子:
一開始直觀的想法可能是每次跳最遠的距離,0-2-3-4 跳了3次。然而答案是2次:0-1-4.
這說明我們需要考慮當前位置能跳的所有點,然後從所有點中選出能跳到最遠位置的那個點。
我們定義乙個狀態max表示在當前可跳範圍內的所有點中,所能跳到的最遠位置。
我們再定義乙個狀態idx表示在當前可跳範圍內的所有點中,能跳到最遠位置的點。
關於這道題貪心正確性的證明比較繁瑣,不過按照這個思路想一下應該可以在腦海中推出來。
class
solution
} cur = idx, ans++
;//跳到該點並步數+1
}return ans;}}
;
Leetcode 跳躍遊戲 II
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...
leetcode45 跳躍遊戲 II
1.題目 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。2.示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,...
leetcode45 跳躍遊戲 II
1.題目 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。2.示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,...