跳躍遊戲之超簡單的貪心算法

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

例子:
輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3 步到達最後一個位置。

思路:

  1. 不考慮每一步的如何向後跳躍
  2. 考慮是否可以到本位置,如果可以則計算本位置可跳躍的最遠位置
  3. 選擇記錄最大的max_now
  4. 遍歷完後,若max_now不小於末尾位置,return True

代碼:

class Solution:
    def canJump(self, nums) :
        max_now = 0       #初始化當前能到達最遠的位置
        for i, jump in enumerate(nums):   #i爲當前位置,jump是當前位置的跳數
            if max_now>=i and i+jump>max_now:  #如果當前位置能到達,並且當前位置+跳數>最遠位置  
                max_now = i+jump  #更新最遠能到達位置
        return max_now>=i
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章