philosyang.com

287. Find the Duplicate Number

Floyd’s tortoise and hare algorithm.

 1class Solution:
 2    def findDuplicate(self, nums: List[int]) -> int:
 3        slow = fast = nums[0]
 4        while True:
 5            slow = nums[slow]
 6            fast = nums[nums[fast]]
 7            if slow == fast:
 8                break
 9
10        slow = nums[0]
11        while slow != fast:
12            slow = nums[slow]
13            fast = nums[fast]
14
15        return slow

#Neetcode150 #Linked-List #Python