Python程式:查詢到達終點所需的最少跳躍次數


假設我們有一個數組nums,其中所有元素都為正數。我們位於索引0處。陣列中的每個元素代表該位置上的最大跳躍長度。我們的目標是以最少的跳躍次數到達最終索引(n-1,其中n是nums的大小)。例如,如果陣列是[2,3,1,1,4],則輸出為2,因為我們可以從索引0跳到索引1,然後跳到索引4,也就是最後一個索引。

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

  • end := 0,jumps := 0,farthest := 0
  • for i in range 0 to length of nums – 1
    • farthest := farthest和nums[i] + i中的最大值
    • 如果i等於end,並且i不等於nums的長度-1,則
      • jumps加1
      • end := farthest
  • 返回jumps

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

示例

線上演示

class Solution(object):
   def jump(self, nums):
      end = 0
      jumps = 0
      farthest = 0
      for i in range(len(nums)):
         farthest = max(farthest,nums[i]+i)
         if i == end and i != len(nums)-1:
            jumps+=1
            end = farthest
      return jumps
ob = Solution()
print(ob.jump([3, 4, 3, 0, 1]))

輸入

[3, 4, 3, 0, 1]

輸出

2

更新於:2020年10月19日

528 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.