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

更新於:2020年10月7日

瀏覽量:115

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.