Find intersection of two arrays (unique)

Find intersection of two arrays (unique)

Hard Java Java Arrays 16 views
Explanation Complexity

Problem Statement

Task: return unique intersection of a and b.

Input Format

An integer n (size of array a)
Then n integers
An integer m (size of array b)
Then m integers

Output Format

An array containing unique elements present in both a and b.

Example

5
1 2 2 3 4
4
2 2 4 6
[2, 4]

Constraints

• n ≥ 0, m ≥ 0

• Result should contain unique elements only

Concept Explanation

We find elements common to both arrays.
Each common value should appear only once in result.

Step-by-Step Explanation

1.Read arrays a and b.

2.Insert all elements of a into a HashSet.

3.Create another empty HashSet for result.

4.Loop through array b:

• If element exists in first set, add it to result set.

5.Convert result set into an array.

6.Return the array.

Concept Explanation

We find elements common to both arrays.
Each common value should appear only once in result.

Step-by-Step Explanation

1.Read arrays a and b.

2.Insert all elements of a into a HashSet.

3.Create another empty HashSet for result.

4.Loop through array b:

• If element exists in first set, add it to result set.

5.Convert result set into an array.

6.Return the array.

Input / Output Format

Input Format
An integer n (size of array a)
Then n integers
An integer m (size of array b)
Then m integers
Output Format
An array containing unique elements present in both a and b.
Constraints
• n ≥ 0, m ≥ 0

• Result should contain unique elements only

Examples

Input:
5 1 2 2 3 4 4 2 2 4 6
Output:
[2, 4]

Example Solution (Public)

Java
static int[] intersection(int[] a,int[] b){java.util.HashSet<Integer> s=new java.util.HashSet<>();for(int x:a) s.add(x);java.util.HashSet<Integer> out=new java.util.HashSet<>();for(int x:b) if(s.contains(x)) out.add(x);int[] r=new int[out.size()];int i=0;for(int x:out) r[i++]=x;return r;}

Official Solution Code

static int[] intersection(int[] a,int[] b){java.util.HashSet<Integer> s=new java.util.HashSet<>();for(int x:a) s.add(x);java.util.HashSet<Integer> out=new java.util.HashSet<>();for(int x:b) if(s.contains(x)) out.add(x);int[] r=new int[out.size()];int i=0;for(int x:out) r[i++]=x;return r;}
Please login to submit solutions.
Editor
Output

                                        
Please login to submit solutions.