跳躍遊戲 貪心演算法

2021-10-08 12:24:47 字數 710 閱讀 8366

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

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

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

示例:

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

輸出: 2

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

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

解題思路:

給定乙個陣列,陣列的元素表示我們可以跳的最大長度,我們想以最少的跳躍次數到達終點,我們思路應該是這樣的

首先,在當前位置,我們找到所有可以跳的到的點,然後貪心的選擇範圍最大而且更遠的點來跳

範圍的大小為nums[i]+i

帶有注釋的**如下:

class solution 

i++;

}jumps++; //步數加一

i=position; //i換成新的跳點

}return jumps; //返回結果

}}

難得做出一道經典的貪心思想的題目,之前要麼是做不出也看不出貪心在哪,要麼就是太簡單完全沒有貪心的感覺,自己做完一道難度為困難的貪心演算法題算是乙個不錯的收尾了,本來只想做十道的,沒想到一直不能體會到貪心的思想,就一直做,總算是有點感覺了,可以做另一種型別的題了

貪心演算法 跳躍遊戲

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。輸入 3,2,1,0,4 輸出 false 解釋 無論怎...

貪心演算法 跳躍遊戲

跳躍遊戲 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 我們可以先跳 1 步,從位置 0 到達 位置 1,然後再從位置 1 跳 3步到達最後乙個位置。示例 ...

貪心演算法 跳躍遊戲

思路 第一反應是回溯問題,不斷窮舉nums i 可能經過的路線,但是很遺憾,執行超時了 如下,也算是提供思路吧 class solution void backtrack vector int nums,int startindex,bool flag for int i 1 i nums star...