關注公眾號《長歌大腿》,發送“機器學習”關鍵字,可獲取包含機器學習(包含深度學習),統計概率,優化算法等系列文本與視頻經典資料,如《ESL》《PRML》《MLAPP》等。
qrcode_for_gh_4dd3ddc9bc02_430.jpg
題目描述:
給定一個非負整數數組,你最初位于數組的第一個位置。
數組中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最后一個位置。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋:從位置 0 到 1 跳 1 步, 然后跳 3 步到達最后一個位置
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋:無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 ,所以你永遠不可能到達最后一個位置。
解題思路:
根據題目描述,顯然出現false的情況為有0時且無法跨越。當走到當前檢索位置時,計算出下步可以到達的最大檢索位置,遍歷數組,如果當前位置計算的檢索位置小于當前檢索,則顯然無法跨越,到最終如果大于等于最大檢索,則返回true。
注意需要遍歷數組,而不能模擬下步并進行跳躍。顯然但是非常重要。
代碼實現(C++):
image
實現分析:
實現算法復雜度為O(n)。