使用 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
廣告