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:
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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"); } } |
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.