跳躍遊戲1和2

2021-09-21 06:50:05 字數 1345 閱讀 6960

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

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

判斷你是否能夠到達最後乙個位置。

示例 1:

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

輸出: true

解釋: 從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後乙個位置。

示例 2:

輸入: [3,2,1,0,4]

輸出: false

解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。

兩種方法貪心演算法和動態規劃

1.貪心演算法**如下:(我也不太理解,希望誰可以補充的更仔細)

public canjump(int a)

return end>=a.lemgth-1;

}

2.動態規劃**如下:

說實話,自己的動態規劃還是很弱,有待加強!

動態規劃的思路相對來說要複雜一下,我們這裡分兩種情況來討論

第一步,定義乙個dp一維陣列,用來記錄每個位置是否能夠達到終點。比如,dp[i],表示在i位置,是否能夠跳到終點,如果能,為true;反之為false。

第二步,dp[i]是否能夠跳到終點,這裡主要分為兩種情況:

1.如果當前位置可以直接跳到終點,也就是說i + a[i] >= a.length() - 1,那麼直接讓dp[i] 為true就行了。

2.如果當前位置不能直接跳到終點,但是可以借助其他位置跳到終點,那麼dp[i]也為true。這裡設定為true有兩個條件,假設它借助j位置,首先dp[j]必須true,其次它必須能夠跳到j位置,也就是說i + dp[i] >= j。

經過簡單的分析,應該能夠理解到這個解法的思路吧!!!

class solution 

else

for (int j = i; j < a.length - 1; j++) }}

return dp[0];

}}

lettcode

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

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

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

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

輸出: 2

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

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

2 跳躍遊戲 c

有一段直線距離,這段距離上分布著 n 個 格仔 每個位置上都標有數字,表示可以從這個格仔往前最多跳躍幾格 最少跳幾步,可以從起點跳到終點?如上圖就是需要從a點跳到c點 在a點,可以往前最多跳2格,也就是在a點 可以往前跳一格或者兩格 b點就可以看成乙個坑,像上圖這個例子中,這個坑就是沒辦法逾越的,所...

跳躍遊戲2 計蒜課

給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。你的目標是到達最後乙個下標,並且使用最少的跳躍次數。例如 a 2,3,1,1,4 a 2,3 1,1 4 到達最後乙個下標的最少跳躍次數為 2 2。先跳躍 1 1 步,從下標 0 0 到 1 ...

LeetCoda 45 跳躍遊戲2

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