45 跳躍遊戲 II hard

2022-06-13 06:27:08 字數 709 閱讀 9651

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

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

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

示例:輸入: [2,3,1,1,4]

輸出: 2

解釋: 跳到最後乙個位置的最小跳躍數是 2。

從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步到達陣列的最後乙個位置。

說明:假設你總是可以到達陣列的最後乙個位置。

思路:•貪心演算法,每一次選擇區域性最優,則可得到全域性最優解;

• 假設每一次可以跳的區間是 [x, x+n],則選擇跳到這個區間裡,可以再次跳到最遠的那乙個;

• 比如:2, 3, 1 這三個數,從 2起跳,選擇落到 3這個值,而不是 1這個值,因為:3 +1>2+1;

• 相當於,每一次起跳,都是跳到空中,等把這個起跳所能達到的視窗內,都遍歷完後,決出下一次能達到的最大值後,選擇這個最大值落地,再繼續起跳。

• 因為,要將這個視窗內,都遍歷完,才能知道下一次能到達的最遠下標,因為這個不需要記錄每一次起跳、落地的點,所以看起來是每一次都跳到視窗最遠處,其實不是的,每一次起跳、落地,都是選擇的視窗內的最優解,因為 maxnum 不是每一次都在更新。

class

solution

}return

steps;

}}

45 跳躍遊戲 II hard

對於每個當前位置而言,如果不是末尾,都是要跳到下乙個位置的,每個位置上能到達的最遠的右界限是不一樣的。那麼,在跳的過程中,在當前位置更新這個最遠的右界限next,一旦next大於長度,那麼就可以在當前跳到末尾,cur表示當前可以跳到的最大長度,注意在跳到cur時更新step,如果在這個過程發現有ne...

leetcode 45 跳躍遊戲II hard

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...

45 跳躍遊戲 II

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...