寻找两个数组间公共元素的 Java 程序
给定两个数组,我们的任务是找到它们的公共元素。 例:
Input: Array1 = ["Article", "for", "Geeks", "for", "Geeks"],
Array2 = ["Article", "Geeks", "Geeks"]
Output: [Article,Geeks]
Input: Array1 = ["a", "b", "c", "d", "e", "f"],
Array2 = ["b", "d", "e", "h", "g", "c"]
Output: [b, c, d, e]
使用迭代方法
进场:
- 获取两个 java 数组。
- 逐个迭代数组中的每个元素,并检查它们在两者中是否相同。
- 为唯一条目添加集合中的每个公共元素。
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to find common elements
// in two Arrays
// Using iterative method
import java.io.*;
import java.util.*;
class GFG {
private static void FindCommonElemet(String[] arr1,
String[] arr2)
{
Set<String> set = new HashSet<>();
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
if (arr1[i] == arr2[j]) {
// add common elements
set.add(arr1[i]);
break;
}
}
}
for (String i : set) {
System.out.print(i + " ");
}
}
// main method
public static void main(String[] args)
{
// create Array 1
String[] arr1
= { "Article", "in", "Geeks", "for", "Geeks" };
// create Array 2
String[] arr2 = { "Geeks", "for", "Geeks" };
// print Array 1
System.out.println("Array 1: "
+ Arrays.toString(arr1));
// print Array 2
System.out.println("Array 2: "
+ Arrays.toString(arr2));
System.out.print("Common Elements: ");
// Find the common elements
FindCommonElemet(arr1, arr2);
}
}
Output
Array 1: [Article, in, Geeks, for, Geeks]
Array 2: [Geeks, for, Geeks]
Common Elements: Geeks for
时间复杂度: O(n^2)
使用哈希集:
通过使用 HashSet 的retainal()方法,我们可以找到两个数组之间的公共元素。
语法:
// This method keeps only the common elements
// of both Collection in Collection1.
Collections1.retainAll(Collections2)
进场:
- 获取两个数组。
- 创建两个 hashsets,并将数组中的元素添加到这些集合中。
- 使用collection . retainal()方法找出两组中的公共元素。此方法只保留集合 1 中两个集合的公共元素。
- 集合 1 现在只包含公共元素。
下面是上述方法的实现:
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to find common elements
// in two Arrays using hashsets
// and retainAll() method
import java.io.*;
import java.util.*;
class GFG {
// function to create hashsets
// from arrays and find
// their common element
public static void FindCommonElements(int[] arr1,
int[] arr2)
{
// create hashsets
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
// Adding elements from array1
for (int i : arr1) {
set1.add(i);
}
// Adding elements from array2
for (int i : arr2) {
set2.add(i);
}
// use retainAll() method to
// find common elements
set1.retainAll(set2);
System.out.println("Common elements- " + set1);
}
// main method
public static void main(String[] args)
{
// create Array 1
int[] arr1
= { 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 };
// create Array 2
int[] arr2 = { 100, 9, 64, 7, 36, 5, 16, 3, 4, 1 };
// print Array 1
System.out.println("Array 1: "
+ Arrays.toString(arr1));
// print Array 2
System.out.println("Array 2: "
+ Arrays.toString(arr2));
FindCommonElements(arr1, arr2);
}
}
Output
Array 1: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Array 2: [100, 9, 64, 7, 36, 5, 16, 3, 4, 1]
Common elements- [16, 64, 1, 4, 36, 100, 9]
时间复杂度: O(n) 使用 HashSet:
进场:
1.将第一个数组的所有元素添加到 hashset 中。
2.迭代第二个数组,并使用 contains 方法检查 hashset 中是否存在元素。如果 contains == true,则将元素添加到结果数组中。
下面是上述方法的实现:
Java 语言(一种计算机语言,尤用于创建网站)
// Java program for the above approach
import java.io.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
class Test {
private static void findCommonElements(int[] arr1,
int[] arr2)
{
// Check if length of arr1 is greater than 0
// and length of arr2 is greater than 0
if (arr1.length > 0 && arr2.length > 0) {
Set<Integer> firstSet = new HashSet<Integer>();
for (int i = 0; i < arr1.length; i++) {
firstSet.add(arr1[i]);
}
// Iterate the elements of the arr2
for (int j = 0; j < arr2.length; j++) {
if (firstSet.contains(arr2[j])) {
System.out.println(arr2[j]);
}
}
}
}
// Driver Code
public static void main(String[] args)
{
int[] arr1 = new int[] { 1, 2, 3, 4, 5, 6, 7 };
int[] arr2 = new int[] { 1, 3, 4, 5, 6, 9, 8 };
// Function Call
findCommonElements(arr1, arr2);
}
}
Output
1
3
4
5
6
时间复杂度 : O(n)
版权属于:月萌API www.moonapi.com,转载请注明出处