Python程式:求解消除重複整數遊戲中獲勝所需步數
假設Amal和Bimal兩位朋友正在玩一個遊戲,遊戲使用一個排序好的數字列表nums。在這個遊戲中,每輪Amal選擇任意三個數字。Bimal移除其中一個,然後Amal移除其中一個。列表一開始包含奇數個元素。Amal希望最小化使列表不包含重複元素所需的輪數,而Bimal希望最大化輪數。如果Amal和Bimal都採取最佳策略,我們需要找到這個遊戲所需的輪數。
例如,如果輸入是nums = [1, 1, 2, 3, 3, 3, 4],則輸出為2。因為如果Amal選擇[1, 1, 3],則Bimal移除3以最大化輪數,陣列變為[1, 1, 2, 3, 3, 4],Amal移除1,陣列變為[1,2,3,3,4];然後在下一輪中,Amal選擇[3,3,4],Bimal移除4以最大化輪數,然後Amal移除3,陣列變為[1,2,3],其中沒有重複元素。
為了解決這個問題,我們將遵循以下步驟:
重複數 repeats := 0
對於範圍從1到nums大小的i,執行:
如果nums[i]等於nums[i-1],則
repeats := repeats + 1
返回 (repeats + 1) / 2 的商
讓我們來看下面的實現,以便更好地理解:
示例
class Solution: def solve(self, nums): repeats = 0 for i in range(1, len(nums)): if nums[i] == nums[i-1]: repeats += 1 return (repeats + 1) // 2 ob = Solution() nums = [1, 1, 2, 3, 3, 3, 4] print(ob.solve(nums))
輸入
[1, 1, 2, 3, 3, 3, 4]
輸出
2
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP