在Python中查找重复编号

假设我们有一个包含n + 1整数的数组nums。成员的范围是1到n。证明至少必须有一个重复的号码。假设只有一个重复的数字,我们必须找到该重复的元素。因此,如果数组类似于[1,3,4,2,2],则重复元素将为2。

为了解决这个问题,我们将遵循以下步骤-

  • a:= nums [0]和b:= nums [0]

  • 而真

    • 一个:= nums [nums [a]]

    • b:= nums [b]

    • 如果a = b,则破坏

  • ptr:= nums [0]

  • 而ptr不是b

    • ptr:= nums [ptr]

    • b:= nums [b]

  • 返回ptr

让我们看下面的实现以更好地理解-

示例

class Solution(object):
   def findDuplicate(self, nums):
      hare = nums[0]
      tortoise = nums[0]
      while True:
         hare = nums[nums[hare]]
         tortoise = nums[tortoise]
         if hare == tortoise:
            break
      ptr = nums[0]
      while ptr!=tortoise:
         ptr = nums[ptr]
         tortoise = nums[tortoise]
      return ptr
ob1 = Solution()print(ob1.findDuplicate([3,1,3,4,2]))

输入值

[3,1,3,4,2]

输出结果

3