Find first repeating element in an array of integers

If you want to practice data structure and algorithm programs, you can go through 100+ data structure and algorithm programs.

In this post, we will see how to find the first repeating element in array of integers.


Problem

Find the first repeating element in array of integers.
For example:

Input: array[] = {10, 7, 8, 1, 8, 7, 6}
Output: 7 [7 is the first element actually repeats]

Solution

Simple solution will be use two loops. Outer loop will iterate through loop and inner loop will check if element is repeated or not but time complexity of this solution will be o(n^2).

Another solution will be to create another array and sort it.Pick element from original array and find the element in sorted array using binary search but time complexity of this solution will be o(n^logn).
Can we do better?
Yes, we can iterate from right to left and use HashSet to keep track fo minimumIndex

  • Intialize minimumIndex with -1
  • Iterate over input array from right to left
  • If element is already present in Hashset, then update the minimumIndex else add element to the set
  • Once we are done with iteration, we will get minimumIndex in the end

Program to find the first repeating element in an array of integers

package org.arpit.java2blog;
/* Java program to find first repeating element in arr[] */
import java.util.*; 

public class FirstRepatingElementMain 
{ 
	// This function prints the first repeating element in arr[] 
	static int getFirstRepeatingElementArray(int array[]) 
	{ 
		// Initialize index of first repeating element 
		int minimumIndex = -1; 

		// Creates an empty hashset 
		HashSet<Integer> set = new HashSet<>(); 

		// Iterate over the input array from right to left 
		for (int i=array.length-1; i>=0; i--) 
		{ 
			// If set contains the element, update minimum index 
			if (set.contains(array[i])) 
				minimumIndex = i; 

			else   // Else add element to hash set 
				set.add(array[i]); 
		} 
		return minimumIndex;
	} 

	public static void main (String[] args) throws java.lang.Exception 
	{ 
		int array[] = {10, 7, 8, 1, 8, 7, 6}; 
		int min=getFirstRepeatingElementArray(array); 
		// Print the result 
		if (min != -1) 
			System.out.println("The first repeating element in array is " + array[min]); 
		else
			System.out.println("There are no repeating elements"); 
	} 
} 

When you run above program, you will get below output:

The first repeating element in array is 7

The time complexity of this solution is O(n) and space complexity is also O(n).

That’s all about how to Find the first repeating element in an array of integers.

[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.