在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