Python程式:檢查糖果移除遊戲中第一個玩家是否獲勝


假設我們有一列數字,稱為糖果,有人正在與朋友玩遊戲。在每一輪中,玩家可以移除任何兩個值相同的連續糖果。任何不能再拾取糖果的人輸掉遊戲,並且玩家1先開始,我們需要檢查玩家1是否會獲勝。

因此,如果輸入像nums = [2, 2, 5],則輸出為True,因為如果玩家1選擇2,則另一位玩家無法拾取任何糖果。

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

  • 棧 := 一個新的棧

  • 回合 := 0

  • 對於nums中的每個數字,執行以下操作:

    • 如果棧不為空且棧頂與數字相同,則

      • 從棧中彈出

      • 回合 := 回合 + 1

    • 否則,

      • 將數字壓入棧

  • 如果回合數為奇數,則返回true,否則返回false


示例

 線上演示

class Solution:
   def solve(self, nums):
      stack = []
      turns = 0
      for num in nums:
         if stack and stack[-1] == num:
            stack.pop()
            turns += 1
         else:
            stack.append(num)

      return bool(turns & 1)

ob = Solution()
nums = [2, 2, 5]
print(ob.solve(nums))

輸入

[2, 2, 5]

輸出

True

更新於:2020年11月10日

141 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告