用 Python 编写程序检查第一个玩家是否在糖果移除游戏中获胜?

pythonserver side programmingprogramming更新于 2026/2/16 7:08:17

假设我们有一个称为糖果的数字列表,并且有人正在与他/她的朋友玩游戏。在每一轮中,玩家可以移除任何两个具有相同值的连续糖果。谁拿不到糖果谁就输,玩家1先开始,我们必须检查玩家1是否会赢。

因此,如果输入为 nums = [2, 2, 5],则输出将为 True,因为如果玩家1选择了 2,则另一个玩家不能选择任何糖果。

要解决这个问题,我们将遵循以下步骤:

  • 堆栈:= 一个新堆栈

  • turns:= 0

  • 对于 nums 中的每个数字,执行

    • 如果堆栈不为空且堆栈顶部与数字相同,则

      • 从堆栈中弹出

      • turns:=turns + 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

相关文章


有用资源