Java Program to Find Union and Intersection of Two Unsorted Arrays

2025年3月29日 | 阅读 6 分钟

在编程中,查找数组的并集和交集是常见的操作。在本节中,我们将实现Java 程序查找两个无序数组的并集和交集的逻辑。

并集

两个数组的并集可以通过合并两个数组并删除重复元素来获得。结果数组包含来自两个数组的所有唯一元素。

这是编程中一项常见操作。它常用于合并列表或查找列表之间的共同元素等任务。

交集

两个数组的交集可以通过遍历一个数组的每个元素并检查它是否存在于另一个数组中来找到。结果数组包含同时存在于两个数组中的元素。

注意:并集和交集的所得数组可以按任何顺序打印。

数组并集和交集示例

示例 1

输入

输出

 
Union: {1, 2, 3, 4, 5, 6, 9}
Intersection: {1, 5, 9}   

示例 2

输入

输出

 
Union: {10, 20, 25, 30, 35, 40, 50}
Intersection: {30, 40}   

示例 3

输入

输出

 
Union: {1, 3, 4, 7, 8, 9}
Intersection: {1, 8}   

方法:带有搜索方法的蛮力法

代码中使用的方法是带有搜索方法蛮力法。它遍历单个数组的元素,并通过利用辅助函数验证每个元素是否在另一个数组中。它通过遍历每个数组并根据元素的出现情况来执行并集和交集操作。

让我们在 Java 程序中实现上述方法。

文件名:UnionIntersectionOfArrays.java

输出

 
Union of the two arrays: [1, 2, 3, 4, 5, 6, 7, 8]
Intersection of the two arrays: [4, 5] 

时间复杂度: O(n⋅m),因为需要检查 array2 中的每个元素与 array1 的匹配情况。

辅助空间: O(n+m),用于将元素存储在并集和交集集中。

方法:基于集合的方法

代码使用基于集合的方法来计算两个数组的并集和交集。它利用 HashSet 进行高效存储和查找,确保并集的唯一元素并简化快速的交集检查。

让我们在 Java 程序中实现上述方法。

文件名:UnionAndIntersection.java

输出

 
The union of both the arrays is:
1 2 3 4 5 6 7 8 
The intersection of both the arrays is:
4 5   

时间复杂度: O(n+m),其中 n 和 m 分别是 firstArray 和 secondArray 的长度。因为代码对每个数组执行了两次独立的遍历。

辅助空间: O(n+m),用于将元素存储在并集和交集集中。

方法:使用 Map 数据结构

代码实现使用 Map 数据结构来查找两个数组的并集和交集。它利用 HashMap 来跟踪元素出现次数,并利用 HashSet 来高效地计算并集和交集。

让我们在 Java 程序中实现上述方法。

文件名:UnionIntersectionUsingMap.java

输出

 
Union of the two arrays: [1, 2, 3, 4, 5, 6, 7, 8]
Intersection of the two arrays: [4, 5]   

时间复杂度: O(n+m),其中 n 是 array1 的长度,m 是 array2 的长度。这包括处理两个数组以及 HashMap 和 HashSet 操作的时间。

辅助空间: O(n+m),用于将元素存储在用于跟踪和计算并集和交集的 HashMap 和 HashSet 中。