貪心算法題:leetcode 55 跳躍游戲

關(guān)注公眾號《長歌大腿》,發(fā)送“機(jī)器學(xué)習(xí)”關(guān)鍵字,可獲取包含機(jī)器學(xué)習(xí)(包含深度學(xué)習(xí)),統(tǒng)計(jì)概率,優(yōu)化算法等系列文本與視頻經(jīng)典資料,如《ESL》《PRML》《MLAPP》等。

qrcode_for_gh_4dd3ddc9bc02_430.jpg

題目描述:

給定一個非負(fù)整數(shù)數(shù)組,你最初位于數(shù)組的第一個位置。

數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達(dá)最后一個位置。

示例 1:

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

輸出: true

解釋:從位置 0 到 1 跳 1 步, 然后跳 3 步到達(dá)最后一個位置

示例 2:

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

輸出: false

解釋:無論怎樣,你總會到達(dá)索引為 3 的位置。但該位置的最大跳躍長度是 0 ,所以你永遠(yuǎn)不可能到達(dá)最后一個位置。

解題思路:

根據(jù)題目描述,顯然出現(xiàn)false的情況為有0時且無法跨越。當(dāng)走到當(dāng)前檢索位置時,計(jì)算出下步可以到達(dá)的最大檢索位置,遍歷數(shù)組,如果當(dāng)前位置計(jì)算的檢索位置小于當(dāng)前檢索,則顯然無法跨越,到最終如果大于等于最大檢索,則返回true。

注意需要遍歷數(shù)組,而不能模擬下步并進(jìn)行跳躍。顯然但是非常重要。

代碼實(shí)現(xiàn)(C++):

image

實(shí)現(xiàn)分析:

實(shí)現(xiàn)算法復(fù)雜度為O(n)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容