Array elements that appear more than once - GeeksforGeeks

11 Aug, 2021
Given an integer array, print all repeating elements (Elements that appear more than once) in the array. The output should contain elements according to their first occurrences.
Examples: 
Input: arr[] = {12, 10, 9, 45, 2, 10, 10, 45}
Output: 10 45

Input: arr[] = {1, 2, 3, 4, 2, 5}
Output: 2

Input: arr[] = {1, 1, 1, 1, 1}
Output: 1
The idea is to use Hashing to solve this in O(n) time on average. We store elements and their counts in a hash table. After storing counts, we traverse input array again and print those elements whose counts are more than once. To make sure that every output element is printed only once, we set count as 0 after printing the element.  
C++
Java
Python3
C#
Javascript
// C++ program to print all repeating elements#include <bits/stdc++.h>using namespace std; void printRepeating(int arr[], int n){    // Store elements and their counts in    // hash table    unordered_map<int, int> mp;    for (int i = 0; i < n; i++)        mp[arr[i]]++;     // Since we want elements in same order,    // we traverse array again and print    // those elements that appear more than    // once.    for (int i = 0; i < n; i++) {        if (mp[arr[i]] > 1) {            cout << arr[i] << " ";             // This is tricky, this is done            // to make sure that the current            // element is not printed again            mp[arr[i]] = 0;        }    }} // Driver codeint main(){    int arr[] = { 12, 10, 9, 45, 2, 10, 10, 45 };    int n = sizeof(arr) / sizeof(arr[0]);    printRepeating(arr, n);    return 0;}
// Java program to print all repeating elements import java.util.*;import java.util.Map.Entry;import java.io.*;import java.lang.*; public class GFG {     static void printRepeating(int arr[], int n)    {         // Store elements and their counts in        // hash table        Map<Integer, Integer> map            = new LinkedHashMap<Integer, Integer>();        for (int i = 0; i < n; i++) {            try {                map.put(arr[i], map.get(arr[i]) + 1);            }            catch (Exception e) {                map.put(arr[i], 1);            }        }         // Since we want elements in the same order,        // we traverse array again and print        // those elements that appear more than once.         for (Entry<Integer, Integer> e : map.entrySet()) {            if (e.getValue() > 1) {                System.out.print(e.getKey() + " ");            }        }    }     // Driver code    public static void main(String[] args) throws IOException    {        int arr[] = { 12, 10, 9, 45, 2, 10, 10, 45 };        int n = arr.length;        printRepeating(arr, n);    }} // This code is contributed by Wrick
# Python3 program to print# all repeating elementsdef printRepeating(arr, n):     # Store elements and    # their counts in    # hash table    mp = [0] * 100    for i in range(0, n):        mp[arr[i]] += 1     # Since we want elements    # in same order, we    # traverse array again    # and print those elements    # that appear more than once.    for i in range(0, n):        if (mp[arr[i]] > 1):            print(arr[i], end = " ")                         # This is tricky, this            # is done to make sure            # that the current element            # is not printed again            mp[arr[i]] = 0     # Driver codearr = [12, 10, 9, 45,       2, 10, 10, 45]n = len(arr)printRepeating(arr, n) # This code is contributed# by Smita
// C# program to print all repeating elementsusing System;using System.Collections.Generic; class GFG{static void printRepeating(int []arr, int n){     // Store elements and their counts in    // hash table    Dictionary<int,               int> map = new Dictionary<int,                                         int>();    for (int i = 0 ; i < n; i++)    {        if(map.ContainsKey(arr[i]))        {            var val = map[arr[i]];            map.Remove(arr[i]);            map.Add(arr[i], val + 1);        }        else        {            map.Add(arr[i], 1);        }    }     // Since we want elements in the same order,    // we traverse array again and print    // those elements that appear more than once.    foreach(KeyValuePair<int, int> e in map)    {        if (e.Value > 1)        {            Console.Write(e.Key + " ");        }    }} // Driver codepublic static void Main(String[] args){    int []arr = { 12, 10, 9, 45, 2, 10, 10, 45 };    int n = arr.Length;    printRepeating(arr, n);}} // This code is contributed by PrinciRaj1992
<script>  // JavaScript program to print all// repeating elements function printRepeating(arr, n){    // Store elements and their counts in    // hash table    var mp = new Map();    for (var i = 0; i < n; i++)    {        if(mp.has(arr[i]))            mp.set(arr[i], mp.get(arr[i])+1)        else               mp.set(arr[i], 1)    }     // Since we want elements in same order,    // we traverse array again and print    // those elements that appear more than    // once.    for (var i = 0; i < n; i++) {        if (mp.get(arr[i]) > 1) {            document.write( arr[i] + " ");             // This is tricky, this is done            // to make sure that the current            // element is not printed again            mp.set(arr[i], 0);        }    }} // Driver codevar arr = [ 12, 10, 9, 45, 2, 10, 10, 45 ];var n = arr.length;printRepeating(arr, n);  </script>
10 45
 
Time Complexity: O(n) under the assumption that hash insert and search functions work in O(1) time. 
Count all the frequencies of all elements using Counter() function.
Traverse in this frequency dictionary and print all keys whose value is greater than 1.
Below is the implementation of above approach:
Python3
# Python3 program to print# all repeating elementsfrom collections import Counter def printRepeating(arr, n):       # Counting frequencies    freq = Counter(arr)         # Traverse the freq dictionary and    # print all the keys whose value    # is greater than 1    for i in freq:        if(freq[i] > 1):            print(i, end=" ")  # Driver codearr = [12, 10, 9, 45,       2, 10, 10, 45]n = len(arr)printRepeating(arr, n) # This code is contributed by vikkycirus
Output:
10 45
Smitha Dinesh Semwal
Wrick
princiraj1992
vikkycirus
itsok
simranarora5sos
Amazon
cpp-unordered_map
Arrays
Hash
Amazon
Arrays
Hash
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Window Sliding Technique
Trapping Rain Water
Reversal algorithm for array rotation
Building Heap from Array
Program to find sum of elements in a given array
Internal Working of HashMap in Java
Hashing | Set 1 (Introduction)
Hashing | Set 3 (Open Addressing)
Count pairs with given sum
Hashing | Set 2 (Separate Chaining)