用 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

相关文章