剑指 Offer 03. 数组中重复的数字
题目链接
这道题看到重复两个字一半想到用哈希,等等,0~n-1?那如果不存在重复元素的且有序的话则index==value,因此可以交换value和index,让其归位(value == index),如果拿到一个value(这个值的index不等于value),发现value下标对应的位置已经归位,则这个value重复。
如下动图所示:
*注:博主用ppt制作
python代码如下:
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
for i in range(len(nums)):
while i != nums[i]:
if nums[i] == nums[nums[i]]:
return nums[i]
temp = nums[i]
nums[nums[i]] = temp
nums[i] = nums[nums[i]]
return -1
如果对你有帮助的话,请点个赞哦!
注:题解参考了答案