python-leetcode-寻找重复数
287. 寻找重复数 - 力扣(LeetCode)
class Solution:
def findDuplicate(self, nums: List[int]) -> int:
# Step 1: 找到环的相遇点
slow = nums[0]
fast = nums[0]
# 使用快慢指针,直到相遇
while True:
slow = nums[slow] # 慢指针走一步
fast = nums[nums[fast]] # 快指针走两步
if slow == fast:
break
# Step 2: 找到环的入口
slow = nums[0] # 重置慢指针到数组的起始位置
while slow != fast:
slow = nums[slow]
fast = nums[fast]
return slow # 返回重复的数字