使用 Python 查詢陣列遊戲中獲勝者的程式


假設我們有一個名為 arr 的陣列,它包含唯一元素,我們還有一個值 k。現在考慮一個遊戲,我們取陣列的前兩個元素。在每一輪中,我們將 arr[0] 與 arr[1] 進行比較,較大的值獲勝並保留在位置 0,較小的值移動到陣列的末尾。當某個值連續獲勝 k 輪時,遊戲結束。我們必須找到陣列中的獲勝者。

因此,如果輸入類似於 arr = [1,5,6,3,4,2],並且 k = 3,則輸出將為 6,因為

  • 第 1 輪,arr = [1,5,6,3,4,2],獲勝者 5,5 的獲勝次數為 1

  • 第 2 輪,arr = [5,6,3,4,2,1],獲勝者 6,6 的獲勝次數為 1

  • 第 3 輪,arr = [6,3,4,2,1,5],獲勝者 6,6 的獲勝次數為 2

  • 第 3 輪,arr = [6,4,2,1,5,3],獲勝者 6,6 的獲勝次數為 3

所以獲勝者是 6,因為它贏了三次 (k = 3)

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

  • l := arr 的大小

  • prev := arr[0]

  • count := 0

  • 對於 i 從 1 到 l - 1,執行

    • 如果 prev > arr[i],則

      • count := count + 1

    • 否則,

      • prev := arr[i]

      • count := 1

    • 如果 count 等於 k,則

      • 返回 prev

  • 返回 prev

讓我們看看以下實現以更好地理解:

示例

即時演示

def solve(arr, k):
   l = len(arr)
   prev = arr[0]
   count = 0
   for i in range(1, l):
      if prev > arr[i]:
         count+=1
      else:
         prev = arr[i]
         count = 1
      if count == k:
         return prev
   return prev
arr = [1,5,6,3,4,2]
k = 3
print(solve(arr, k))

輸入

[1,5,6,3,4,2], 3

輸出

6

更新於: 2021年5月29日

905 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告