We are given an array A. We have to find the first non repeating element in the array.
Table of Contents
Example
Input:
A[]={2,1,2,1,3,4}
Output:
First non-repeating element is: 3
Because 1, 2 is not the answer because they are repeating and 4 is not the answer because we have to find the first non_repeating element, which is 3, not 4.
Approach 1: Brute force
Main idea
For every element in the array, we will iterate the whole array and if this element is non-repeating then we will just print this element.
Algorithm
- Run a loop for I in range 0 to n-1
- Run a loop for j in range 0 to n
- If j becomes equal to n, then print A[i] and return.
- If I is not equal to j and A[i] is equal to A[j], then break from this loop.
- Print that all the elements are repeating in the array.
- Run a loop for j in range 0 to n
Implementation for First non Repeating Element
C++ Program
#include <bits/stdc++.h>
using namespace std;
void firstNonRepeatingElement(vector<int> &A)
{
int n = A.size();
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= n; j++)
{
if (j == n)
{
cout << "First non-repeating element is: " << A[i] << endl;
return;
}
if (j != i and A[i] == A[j])
{
break;
}
}
}
cout << "All the elements are repeating." << endl;
}
int main()
{
vector<int> A = {2, 1, 2, 1, 3, 4};
firstNonRepeatingElement(A);
return 0;
}
First non-repeating element is: 3
JAVA Program
public class Main
{
static void firstNonRepeatingElement(int A[])
{
int n = A.length;
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= n; j++)
{
if (j == n)
{
System.out.println("First non-repeating element is: "+A[i]);
return;
}
if (j != i && A[i] == A[j])
{
break;
}
}
}
System.out.println("All the elements are repeating.");
}
public static void main(String[] args) {
int A[]={2, 1, 2, 1, 3, 4};
firstNonRepeatingElement(A);
}
}
First non-repeating element is: 3
Complexity Analysis for First non Repeating Element
Time Complexity
We have two nested loops both of size N, so the total time complexity is O(N^2).
Space complexity
We are not using any extra space so the space complexity is O(1).
Approach 2: Using hashing
Main idea
We can store the frequency of each element in a hash table and after that we can traverse the array and find the first element whose frequency is 1.
Algorithm
- Store the frequency of each element in a hash table.
- Run a loop for I in range 0 to n-1
- If the frequency of A[i] in the hash table is 1, print A[i] and return.
- Print that there all the elements in the array that are repeating.
Understand with example
A[]={2, 1, 2, 1, 3, 4}
Then the hash table will look like this:

Implementation for First non Repeating Element
C++ Program
#include <bits/stdc++.h>
using namespace std;
void firstNonRepeatingElement(vector<int> &A)
{
int n = A.size();
unordered_map<int, int> hash_table;
for (int i = 0; i < n; i++)
{
hash_table[A[i]]++;
}
for (int i = 0; i < n; i++)
{
if (hash_table[A[i]] == 1)
{
cout << "First non-repeating element is: " << A[i] << endl;
return;
}
}
cout << "All the elements are repeating." << endl;
}
int main()
{
vector<int> A = {2, 1, 2, 1, 3, 4};
firstNonRepeatingElement(A);
return 0;
}
First non-repeating element is: 3
JAVA Program
public class Main
{
static void firstNonRepeatingElement(int A[])
{
java.util.HashMap<Integer, Integer> hash_table = new java.util.HashMap<Integer, Integer>();
int n = A.length;
for(int i=0;i<n;i++)
{
Integer freq = hash_table.get(A[i]);
hash_table.put(A[i], (freq == null) ? 1 : freq + 1);
}
for (int i = 0; i < n; i++)
{
if (hash_table.get(A[i])==1)
{
System.out.println("First non-repeating element is: "+A[i]);
return;
}
}
System.out.println("All the elements are repeating.");
}
public static void main(String[] args) {
int A[]={2, 1, 2, 1, 3, 4};
firstNonRepeatingElement(A);
}
}
First non-repeating element is: 3
Complexity Analysis for First non Repeating Element
Time Complexity
We are iterating the array only twice so the total time complexity is O(N).
Space complexity
We are maintaining a hash table so the space complexity is O(N).