📌  相关文章
📜  从给定数组中找到所有可能的对(1)

📅  最后修改于: 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

以上两种方法各有优缺点,具体使用哪种方法需要根据具体情况而定。