Find the frequencies of all duplicates elements in the array
Given an array of integers with duplicate elements in it, the task is to find the duplicate elements in the array and their frequencies.
Examples:
Input: arr[] = {2, 3, 4, 5, 4, 6, 4, 7, 4, 5, 6, 6}
Output: Below is the frequency of repeated elements –
4 –> 4
5 –> 2
6 –> 3
Input: arr[] = {4, 4, 5, 5, 6}
Output: Below is the frequency of repeated elements –
4 –> 2
5 –> 2
Approach:
- Create a Hash Map to store the frequency of the elements.
- Elements whose frequency is greater than 1 are the repeated elements.
Below is the implementation of the above approach:
CPP
// CPP Implementation to find the // repeating elements with there count #include<bits/stdc++.h> using namespace std; // Function to find the repeating // elements with there count map< int , int > findRepeating( int arr[], int size){ // Hash map to store the // frequency of elements map< int , int > frequency; // Loop to store the frequency of // elements of array for ( int i = 0; i < size; i++) frequency[arr[i]]++; return frequency; } // Driver Code int main(){ int arr[] = {4, 4, 5, 5, 6}; int arr_size = sizeof (arr)/ sizeof (arr[0]); map< int , int > frequency = findRepeating(arr, arr_size); cout<< "Below is the frequency of repeated elements -" <<endl; for ( auto x : frequency){ if (frequency[x.first] > 1) cout<<x.first<< " --> " <<frequency[x.first]<<endl; } } // This code is contributed by Surendra_Gangwar |
Java
// Java Implementation to find the // repeating elements with there count import java.util.*; class GFG { // Function to find the repeating // elements with there count static HashMap<Integer, Integer> findRepeating( int []arr, int size){ // Hash map to store the // frequency of elements HashMap<Integer,Integer> frequency = new HashMap<Integer,Integer>(); // Loop to store the frequency of // elements of array for ( int i = 0 ; i < size; i++) { if (frequency.containsKey(arr[i])) { frequency.put(arr[i], frequency.get(arr[i]) + 1 ); } else { frequency.put(arr[i], 1 ); } } return frequency; } // Driver Code public static void main(String []args) { int []arr = { 4 , 4 , 5 , 5 , 6 }; int arr_size = arr.length; HashMap<Integer,Integer> frequency = findRepeating(arr, arr_size); System.out.println( "Below is the frequency" + "of repeated elements -" ); for (Map.Entry<Integer,Integer> entry : frequency.entrySet()) if (entry.getValue() > 1 ) System.out.println(entry.getKey()+ " --> " +entry.getValue()); } } // This code is contributed by PrinciRaj1992 |
Python
# Python Implementation to find the # repeating elements with there count # Function to find the repeating # elements with there count def findRepeating(arr, size): # Hash map to store the # frequency of elements frequency = {} # Loop to store the frequency of # elements of array for i in range ( 0 , size): frequency[arr[i]] = \ frequency.get(arr[i], 0 ) + 1 return frequency # Driver Code if __name__ = = "__main__" : arr = [ 4 , 4 , 5 , 5 , 6 ] arr_size = len (arr) frequency = findRepeating(arr, arr_size) print ("Below is the frequency\ of repeated elements - ") for i in frequency: if frequency[i] > 1 : print (i, " --> " , frequency[i]) |
C#
// C# Implementation to find the // repeating elements with there count using System; using System.Collections.Generic; class GFG { // Function to find the repeating // elements with there count static Dictionary< int , int > findRepeating( int []arr, int size){ // Hash map to store the // frequency of elements Dictionary< int , int > frequency = new Dictionary< int , int >(); // Loop to store the frequency of // elements of array for ( int i = 0; i < size; i++) { if (frequency.ContainsKey(arr[i])) { frequency[arr[i]] = frequency[arr[i]] + 1; } else { frequency.Add(arr[i], 1); } } return frequency; } // Driver Code public static void Main(String []args) { int []arr = {4, 4, 5, 5, 6}; int arr_size = arr.Length; Dictionary< int , int > frequency = findRepeating(arr, arr_size); Console.WriteLine( "Below is the frequency" + "of repeated elements -" ); foreach (KeyValuePair< int , int > entry in frequency) if (entry.Value > 1) Console.WriteLine(entry.Key+ " --> " +entry.Value); } } // This code is contributed by 29AjayKumar |
Javascript
<script> // Javascript Implementation to find the // repeating elements with there count // Function to find the repeating // elements with there count function findRepeating(arr, size) { // Hash map to store the // frequency of elements var frequency = new Map(); // Loop to store the frequency of // elements of array for ( var i = 0; i < size; i++) { if (frequency.has(arr[i])) { frequency.set(arr[i], frequency.get(arr[i])+1); } else { frequency.set(arr[i], 1); } } return frequency; } // Driver Code var arr = [4, 4, 5, 5, 6]; var arr_size = arr.length; var frequency = findRepeating(arr, arr_size); document.write( "Below is the frequency" + "of repeated elements -<br>" ); frequency.forEach((value, key) => { if (value > 1) document.write(key+ " --> " +value + "<br>" ); }); // This code is contributed by rrrtnx. </script> |
Below is the frequency of repeated elements - 4 --> 2 5 --> 2
Time Complexity: O(n*log(n))
Auxiliary Space: O(n)
Efficient Approach( Space optimization): we can use binary search . For this , First sort the array and then find frequency of all array element with the use of binary search function ( Upper_bound ) . The frequency of array element will be ‘last_index-first_index+1’ . If the frequency is greater than one , then print it .
Below is the implementation of the above approach:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; //Function to find frequency of elements in the array void findRepeating( int arr[], int n) { sort(arr,arr+n); //sort array for binary search for ( int i = 0 ; i < n ;i++) { //index of first and last occ of arr[i] int first_index = lower_bound(arr,arr+n,arr[i])- arr; int last_index = upper_bound(arr,arr+n,arr[i])- arr-1; i=last_index; int fre = last_index-first_index+1; //finding frequency if (fre >= 2) { //printing frequency if it is greater than 1 cout << arr[i] << " --> " <<fre <<endl; } } } // Drive code int main() { int arr[] = {2, 3, 4, 5, 4, 6, 4, 7, 4, 5, 6, 6}; int n = sizeof (arr)/ sizeof (arr[0]); // Function call findRepeating(arr, n); return 0; } // This Code is contributed by nikhilsainiofficial546 |
C#
using System; class MainClass { // Function to find frequency of elements in the array static void FindRepeating( int [] arr, int n) { // sort array for binary search Array.Sort(arr); for ( int i = 0; i < n; i++) { // index of first and last occ of arr[i] int first_index = Array.IndexOf(arr, arr[i]); int last_index = Array.LastIndexOf(arr, arr[i]); i = last_index; // finding frequency int fre = last_index - first_index + 1; if (fre >= 2) { // printing frequency if it is greater than // 1 Console.WriteLine(arr[i] + " --> " + fre); } } } // Drive code public static void Main( string [] args) { int [] arr = { 2, 3, 4, 5, 4, 6, 4, 7, 4, 5, 6, 6 }; int n = arr.Length; // Function call FindRepeating(arr, n); } } |
Java
import java.util.*; class Main { // Function to find frequency of elements in the array public static void findRepeating( int arr[], int n) { Arrays.sort(arr); // sort array for binary search int i = 0 ; while (i < n) { // index of first and last occ of arr[i] int firstIndex = i; while (i < n - 1 && arr[i] == arr[i + 1 ]) { i++; } int lastIndex = i; int frequency = lastIndex - firstIndex + 1 ; // finding frequency if (frequency >= 2 ) { // printing frequency if it is greater than // 1 System.out.println(arr[i] + " --> " + frequency); } i++; } } // Driver code public static void main(String[] args) { int arr[] = { 2 , 3 , 4 , 5 , 4 , 6 , 4 , 7 , 4 , 5 , 6 , 6 }; int n = arr.length; // Function call findRepeating(arr, n); } } |
Javascript
//Function to find frequency of elements in the array function findRepeating(arr, n) { arr.sort(); // sort array for binary search for (let i = 0 ; i < n ; i++) { // index of first and last occ of arr[i] let first_index = arr.indexOf(arr[i]); let last_index = arr.lastIndexOf(arr[i]); i = last_index; let fre = last_index - first_index + 1; // finding frequency if (fre >= 2) { // printing frequency if it is greater than 1 console.log(arr[i] + " --> " + fre); } } } // Drive code let arr = [2, 3, 4, 5, 4, 6, 4, 7, 4, 5, 6, 6]; let n = arr.length; // Function call findRepeating(arr, n); |
Python3
def find_repeating(arr, n): arr.sort() # sort array for binary search i = 0 while i < n: # index of first and last occ of arr[i] first_index = i while i < n - 1 and arr[i] = = arr[i + 1 ]: i + = 1 last_index = i frequency = last_index - first_index + 1 # finding frequency if frequency > = 2 : # printing frequency if it is greater than 1 print ( str (arr[i]) + " --> " + str (frequency)) i + = 1 # Driver code arr = [ 2 , 3 , 4 , 5 , 4 , 6 , 4 , 7 , 4 , 5 , 6 , 6 ] n = len (arr) # Function call find_repeating(arr, n) |
4 --> 4 5 --> 2 6 --> 3
Time Complexity: O(n*log2n) , Taking O(log2n) time for binary search function ( upper_bound) .
Auxiliary Space: O(1)
Contact Us