關(guān)注公眾號(hào)《長(zhǎng)歌大腿》,發(fā)送“機(jī)器學(xué)習(xí)”關(guān)鍵字殊鞭,可獲取包含機(jī)器學(xué)習(xí)(包含深度學(xué)習(xí)),統(tǒng)計(jì)概率尼桶,優(yōu)化算法等系列文本與視頻經(jīng)典資料操灿,如《ESL》《PRML》《MLAPP》等。
題目描述:
給定一個(gè)非負(fù)整數(shù)數(shù)組泵督,你最初位于數(shù)組的第一個(gè)位置趾盐。
數(shù)組中的每個(gè)元素代表你在該位置可以跳躍的最大長(zhǎng)度。
判斷你是否能夠到達(dá)最后一個(gè)位置小腊。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋:從位置 0 到 1 跳 1 步, 然后跳 3 步到達(dá)最后一個(gè)位置
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋:無(wú)論怎樣救鲤,你總會(huì)到達(dá)索引為 3 的位置。但該位置的最大跳躍長(zhǎng)度是 0 秩冈,所以你永遠(yuǎn)不可能到達(dá)最后一個(gè)位置本缠。
解題思路:
根據(jù)題目描述,顯然出現(xiàn)false的情況為有0時(shí)且無(wú)法跨越入问。當(dāng)走到當(dāng)前檢索位置時(shí)丹锹,計(jì)算出下步可以到達(dá)的最大檢索位置,遍歷數(shù)組芬失,如果當(dāng)前位置計(jì)算的檢索位置小于當(dāng)前檢索楣黍,則顯然無(wú)法跨越,到最終如果大于等于最大檢索棱烂,則返回true租漂。
注意需要遍歷數(shù)組,而不能模擬下步并進(jìn)行跳躍垢啼。顯然但是非常重要窜锯。
代碼實(shí)現(xiàn)(C++):
實(shí)現(xiàn)分析:
實(shí)現(xiàn)算法復(fù)雜度為O(n)。