📅  最后修改于: 2023-12-03 14:51:28.029000             🧑  作者: Mango
在开发过程中,经常需要在整数数组中查找第一个重复元素。这个问题可以用多种方法解决,接下来将介绍其中的两种方法。
使用哈希表
算法思路:
Python代码实现:
def find_first_duplicate(arr):
hash_map = {}
for num in arr:
if num in hash_map:
return num
hash_map[num] = 1
return -1
时间复杂度:O(n)
空间复杂度:O(n)
使用快慢指针
算法思路:
Python代码实现:
def find_first_duplicate(arr):
arr.sort()
slow = 0
fast = 1
while fast < len(arr):
if arr[slow] == arr[fast]:
return arr[slow]
slow += 1
fast += 1
return -1
时间复杂度:O(nlogn)
空间复杂度:O(1)
方法一使用了哈希表来快速查找重复元素,时间复杂度为线性的O(n),但需要使用额外的哈希表来存储元素,空间复杂度也为O(n)。方法二则没有使用额外的空间,时间复杂度为O(nlogn),不如方法一优秀,不过对于小数据量的数组,方法二会更快。两种方法各有优劣,可以根据实际情况选择使用。