📅  最后修改于: 2023-12-03 15:10:44.894000             🧑  作者: Mango
在处理数组时,有时候需要查找唯一不同的元素或者查找重复的元素。对于重复元素的查找,可以使用哈希表或者排序等方法。而对于唯一不同元素的查找,则需要使用一些巧妙的方法。
如果一个数组中只有一个元素出现了奇数次,而其他元素都出现了偶数次,那么对所有元素进行异或之后,最终的结果就是这个唯一的元素。因为偶数次的元素异或之后都会抵消,剩下的就是那个出现奇数次的元素。
def findUnique(arr):
result = arr[0]
for i in range(1, len(arr)):
result ^= arr[i]
return result
使用一个哈希表来记录每个元素出现的次数,然后遍历哈希表,找出只出现一次的元素。
def findUnique(arr):
count = {}
for i in arr:
if i in count:
count[i] += 1
else:
count[i] = 1
for i in count:
if count[i] == 1:
return i
将数组进行排序,然后比较相邻的元素,找出不同的那个元素。
def findUnique(arr):
arr.sort()
for i in range(0, len(arr)-1, 2):
if arr[i] != arr[i+1]:
return arr[i]
return arr[-1]
以上三种方法都可以用来查找数组中唯一不同的元素。异或和哈希表的时间复杂度是O(n),排序加比较的时间复杂度是O(n log n)。在选择时需要根据具体情况来决定哪种方法更适合。