假设两个朋友Amal和Bimal正在玩一个游戏,游戏中列出了一些叫做nums的数字。在此游戏中,阿马尔一口气选择了三个数字。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],没有重复的元素。
为了解决这个问题,我们将遵循以下步骤-
重复:= 0
对于范围为1到nums的i
如果nums [i]与nums [i-1]相同,则
重复:=重复+ 1
(重复数+ 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