給定一個非負整數數組,你最初位於數組的第一個位置。
數組中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後一個位置。
例子:
輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3 步到達最後一個位置。
思路:
- 不考慮每一步的如何向後跳躍
- 考慮是否可以到本位置,如果可以則計算本位置可跳躍的最遠位置
- 選擇記錄最大的max_now
- 遍歷完後,若max_now不小於末尾位置,return True
代碼:
class Solution:
def canJump(self, nums) :
max_now = 0 #初始化當前能到達最遠的位置
for i, jump in enumerate(nums): #i爲當前位置,jump是當前位置的跳數
if max_now>=i and i+jump>max_now: #如果當前位置能到達,並且當前位置+跳數>最遠位置
max_now = i+jump #更新最遠能到達位置
return max_now>=i