Python程式:檢查能否從索引0到達最後一個位置


假設我們有一個名為nums的數字列表,每個數字表示我們可以跳躍的最大步數;我們必須檢查能否從索引0開始到達最後一個索引。

因此,如果輸入類似於nums = [2,5,0,2,0],則輸出為True,因為我們可以從索引0跳到1,然後從索引1跳到末尾。

為了解決這個問題,我們將遵循以下步驟:

  • n := nums的大小

  • arr := 一個大小為n的陣列,並填充為false

  • arr[n - 1] := True

  • 對於i從n - 2到0,遞減1,執行:

    • 如果arr[從索引i + 1到i + nums[i]]中的任何一個為真,則arr[i] := true

  • 返回arr[0]

讓我們來看下面的實現,以便更好地理解:

示例

 線上演示

class Solution:
   def solve(self, nums):
      n = len(nums)
      arr = [False] * n
      arr[n - 1] = True
      for i in range(n - 2, -1, -1):
         arr[i] = any(arr[i + 1 : i + nums[i] + 1])
      return arr[0]
ob = Solution()
nums = [2,5,0,2,0]
print(ob.solve(nums))

輸入

[2,5,0,2,0]

輸出

True

更新於:2020年10月9日

165次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.