📅  最后修改于: 2023-12-03 15:06:37.933000             🧑  作者: Mango
在一个数组中,要找到所有可能的对是一项非常常见的任务。有很多种方法可以完成这个任务,下面将介绍其中的两种方法。
暴力枚举法就是枚举出所有可能的情况,然后逐一比较。该方法的时间复杂度是O(n^2),因此当数组较大时,效率很低。
下面是该方法的Python代码片段:
def find_pairs(arr):
result = []
n = len(arr)
for i in range(n):
for j in range(i+1, n):
result.append((arr[i], arr[j]))
return result
哈希表法的前提是要求数组中的元素是唯一的。该方法的时间复杂度是O(n),因此当数组较大时,效率很高。
下面是该方法的Python代码片段:
def find_pairs(arr):
result = []
n = len(arr)
hash_map = {}
for i in range(n):
hash_map[arr[i]] = i
for i in range(n):
if 2 * arr[i] in hash_map:
j = hash_map[2 * arr[i]]
if i != j:
result.append((arr[i], arr[j]))
return result
以上两种方法各有优缺点,具体使用哪种方法需要根据具体情况而定。