用 Python 编写的程序,用于查找赢得删除重复整数游戏所需的移动次数
programmingpythonserver side programming
假设两个朋友 Amal 和 Bimal 正在玩一个游戏,游戏中包含一个排序的数字列表,称为 nums。在这个游戏中,Amal 在一个回合中选择任意三个数字。Bimal 删除其中一个,然后 Amal 删除其中一个。列表以奇数个元素开始。在这里,Amla 希望最小化使列表不包含重复元素所需的回合数,而 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