LeetCode Jump Game II
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) 來獲得相關源代碼。
LeetCode Jump Game II