1. 程式人生 > >LeetCode Jump Game II

LeetCode Jump Game II

查看 text lang pop markdown sel code blog pretty

LeetCode解題之Jump Game II


原題

數組中的每一個值表示在當前位置最多能向前面跳幾步,推斷至少跳幾步可以跳到最後。

註意點:

  • 全部的數字都是正數
  • 跳的步數可以比當前的值小
  • 保證全部的測試用例都可以跳到最後

樣例:

輸入: nums = [2, 3, 1, 1, 4]

輸出: 2

解題思路

這是在 Jump Game 之上給出的問題。題目已經保證可以跳到最後。

遍歷數組。起始到當前坐標全部跳躍方式可以到達的最遠距離是reach,我們跳n步能到達的最遠距離用longest表示,假設longest不能到達當前坐標,說明就要多跳一步了,直接跳到當前坐標之前的點可以跳到的最遠位置。

AC源代碼

class Solution(object):
    def jump(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        length = len(nums)
        counter = 0
        longest = 0
        reach = 0
        for i in range(length):
            if longest < i:
                counter += 1
longest = reach reach = max(reach, nums[i] + i) return counter if __name__ == "__main__": assert Solution().jump([2, 3, 1, 1, 4]) == 2

歡迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 來獲得相關源代碼。

‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); });

    LeetCode Jump Game II