假设我们有一个称为糖果的数字列表,某人正在与他/她的朋友玩游戏。在每个回合中,玩家可以移除任何两个具有相同值的连续糖果。如果谁不能拿起糖果输了,而那个玩家1首先开始,我们就必须检查玩家1是否会赢。
因此,如果输入类似于nums = [2,2,5],则输出将为True,就像玩家1选择2s一样,其他玩家则不能选择任何糖果。
为了解决这个问题,我们将按照以下步骤操作:
堆栈:=一个新的堆栈
转:= 0
对于以num为单位的每个num
将num推入堆栈
从堆栈弹出
转:=转+ 1
如果堆栈不为空并且堆栈顶部与num相同,则
除此以外,
当转弯为奇数时返回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