📅  最后修改于: 2023-12-03 15:07:57.998000             🧑  作者: Mango
在一个数组中,如果每个数字都有对应的另一个数字,且只有一个数字是独一无二的,那么我们就可以通过查找这个独一无二的数字来找到这个唯一的对。
我们可以使用 hashmap 或者 set 来解决这个问题。
我们可以先遍历一次数组,将每个数字添加到 hashmap 中,并记录它们的出现次数。再次遍历数组,查找只出现一次的数字。
def find_unique_pair(arr):
hashmap = {}
# 遍历数组并记录出现次数
for num in arr:
if num not in hashmap:
hashmap[num] = 1
else:
hashmap[num] += 1
# 遍历数组并查找只出现一次的数字
for num in arr:
if hashmap[num] == 1:
return (num, num+1) if (num+1) in hashmap else (num-1, num)
我们可以使用 set 来记录已经出现过的数字,当遍历数组时,如果当前数字不在 set 中,就将它添加;如果已经在 set 中,就将它从 set 中删除。最后留下的就是唯一的数字。
def find_unique_pair(arr):
num_set = set()
# 遍历数组并记录唯一的数字
for num in arr:
if num in num_set:
num_set.remove(num)
else:
num_set.add(num)
unique_num = num_set.pop()
return (unique_num, unique_num+1) if (unique_num+1) in arr else (unique_num-1, unique_num)
无论是使用 hashmap 还是 set,在遍历数组后都可以找到唯一的数字对。使用 set 的方法比较巧妙,不需要记录数字出现的次数,代码量也比较少。在实际应用中,我们可以根据具体情况选择合适的方法。