程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode Jump Game II

LeetCode Jump Game II

編輯:關於C++

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

歡迎查看我的Python">Github來獲得相關源碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved