Python程序:求解消除重复整数游戏中获胜所需步数


假设Amal和Bimal两位朋友正在玩一个游戏,游戏使用一个排序好的数字列表nums。在这个游戏中,每轮Amal选择任意三个数字。Bimal移除其中一个,然后Amal移除其中一个。列表一开始包含奇数个元素。Amal希望最小化使列表不包含重复元素所需的轮数,而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

更新于:2020年10月7日

浏览量:115

启动你的职业生涯

完成课程获得认证

开始学习
广告