1. 程式人生 > >LeetCode--55.跳躍遊戲

LeetCode--55.跳躍遊戲

問題:

給定一個非負整數陣列,你最初位於陣列的第一個位置,陣列中的每個元素代表你在該位置可以跳躍的最大長度,判斷你是否能夠到達最後一個位置。

示例 1:

           輸入: [2,3,1,1,4]           輸出: true           解釋: 從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後一個位置。

示例 2

           輸入: [3,2,1,0,4]           輸出: false           解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 

思路:

           在未達到最後之前,剩餘步數大於零。

程式碼(python)

class Solution:
    def canJump(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        step+nums[i] : 當前剩餘的步數
        step = max(step, nums[i])
        
        """
        if len(nums) == 1:
            return True
        if nums[0] == 0:
            return False
        
        step = nums[0]
        for i in range(1, len(nums)):
            step -= 1
            if step+nums[i] == 0 and i != len(nums)-1:
                return False
                  
            step = max(step, nums[i])
        return True