当前位置:实例文章 » 其他实例» [文章]349. 两个数组的交集

349. 两个数组的交集

发布人:shili8 发布时间:2024-12-22 15:33 阅读次数:0

**两个数组的交集**

在计算机科学中,两个数组的交集是指两个集合中同时存在的元素。这个问题经常出现在数据处理、信息检索等领域。在本文中,我们将讨论如何求两个数组的交集,并提供相关代码示例。

**算法思路**

求两个数组的交集可以使用以下步骤:

1. 将两个数组合并成一个集合。
2. 使用集合中的元素来构建一个新的集合,这个新集合包含了两个原始集合中同时存在的元素。

**Python代码示例**

def intersection(arr1, arr2):
 """
 Returns the intersection of two arrays.
 Parameters:
 arr1 (list): The first array.
 arr2 (list): The second array.
 Returns:
 list: The intersection of arr1 and arr2.
 """
 # Convert the lists to sets for efficient lookup set1 = set(arr1)
 set2 = set(arr2)
 # Use the & operator to find the intersection intersection_set = set1 & set2 # Convert the result back to a list result = list(intersection_set)
 return result# Example usage:
arr1 = [1,2,3,4,5]
arr2 = [4,5,6,7,8]

print(intersection(arr1, arr2)) # Output: [4,5]


**Java代码示例**

javaimport java.util.*;

public class Main {
 public static Set intersection(int[] arr1, int[] arr2) {
 // Convert the arrays to sets for efficient lookup Set set1 = new HashSet<>();
 for (int num : arr1) {
 set1.add(num);
 }
 Set set2 = new HashSet<>();
 for (int num : arr2) {
 set2.add(num);
 }
 // Use the retainAll method to find the intersection set1.retainAll(set2);
 return set1;
 }

 public static void main(String[] args) {
 int[] arr1 = {1,2,3,4,5};
 int[] arr2 = {4,5,6,7,8};

 Set result = intersection(arr1, arr2);
 System.out.println(result); // Output: [4,5]
 }
}


**时间复杂度分析**

* 将两个数组合并成一个集合的时间复杂度为 O(n + m),其中 n 和 m 是两个数组中的元素数量。
* 使用集合中的元素来构建一个新的集合的时间复杂度为 O(min(n, m)),因为我们只需要遍历较小集合中的元素。
* 总体而言,求两个数组的交集的时间复杂度为 O(n + m)。

**空间复杂度分析**

* 需要额外的空间来存储两个集合和新的集合,因此空间复杂度为 O(n + m)。

综上所述,求两个数组的交集是一个高效且有效的算法,可以在 O(n + m) 的时间复杂度下完成。

相关标签:算法哈希算法
其他信息

其他资源

Top