📅  最后修改于: 2023-12-03 15:37:15.731000             🧑  作者: Mango
本文介绍了ISRO CS 2017年5月的考试问题24。这道问题是关于在数组中找到唯一重复元素的算法实现。
给定一个大小为n的数组,其中的元素都是介于1到n-1之间的整数。请编写一个函数,找到数组中唯一的重复元素。
例子:
Input: [1, 2, 3, 4, 4]
Output: 4
数组中只有一个重复元素,我们可以将元素映射到他们的索引上。遍历数组,将对应索引上的元素取相反数,当我们访问到一个索引上的元素为负数时,即可找到重复元素。
代码如下:
def find_duplicate(nums):
for num in nums:
index = abs(num) - 1
if nums[index] < 0:
return abs(num)
else:
nums[index] *= -1
该算法的时间复杂度为O(n),因为遍历数组需要O(n)的时间,而每次访问索引只需要O(1)的时间复杂度。同时该算法也不需要额外的空间。 由此看来,该算法是很优秀的。