關(guān)注公眾號《長歌大腿》,發(fā)送“機(jī)器學(xué)習(xí)”關(guān)鍵字,可獲取包含機(jī)器學(xué)習(xí)(包含深度學(xué)習(xí)),統(tǒng)計概率,優(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)前檢索位置時,計算出下步可以到達(dá)的最大檢索位置,遍歷數(shù)組,如果當(dāng)前位置計算的檢索位置小于當(dāng)前檢索,則顯然無法跨越,到最終如果大于等于最大檢索,則返回true。
注意需要遍歷數(shù)組,而不能模擬下步并進(jìn)行跳躍。顯然但是非常重要。
代碼實現(xiàn)(C++):
image
實現(xiàn)分析:
實現(xiàn)算法復(fù)雜度為O(n)。