leetcode 跳躍遊戲 II 貪心

2021-10-03 18:53:24 字數 781 閱讀 1350

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

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

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

示例:輸入: [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 步,...