題目
https://www.lintcode.com/problem/jump-game/description?_from=ladder&&fromId=2
實現
- 維護一個能跳到最遠的變量
- 如果
max_jump >= i
(保證可以繼續跳了) 且A[i] + i >= max_jump
(保證當前位置跳後大於 max_jump) 就更新max_jump
- 最後再判斷
max_jump >= length - 1
即可(這個可以參照 A = [0] 來思考)
代碼
class Solution:
"""
@param A: A list of integers
@return: A boolean
"""
def canJump(self, A):
if A is None or len(A) == 0:
return False
max_jump = A[0]
for i in range(len(A)):
if max_jump >= i and A[i] + i >= max_jump:
max_jump = A[i] + i
return max_jump >= len(A) - 1