Remove elements that appear strictly less than k times
Given an array of integers, remove all the elements which appear strictly less than k times.
Examples:
Input : arr[] = {1, 2, 2, 3, 2, 3, 4} k = 2 Output : 2 2 3 2 3 Explanation : {1, 4} appears less than 2 times.
Approach :
- Take a hash map, which will store the frequency of all the elements in the array.
- Now, traverse once again.
- Remove the elements which appears strictly less than k times.
- Else, print it.
C++
// C++ program to remove the elements which // appear strictly less than k times from the array. #include "iostream" #include "unordered_map" using namespace std; void removeElements( int arr[], int n, int k) { // Hash map which will store the // frequency of the elements of the array. unordered_map< int , int > mp; for ( int i = 0; i < n; ++i) { // Incrementing the frequency // of the element by 1. mp[arr[i]]++; } for ( int i = 0; i < n; ++i) { // Print the element which appear // more than or equal to k times. if (mp[arr[i]] >= k) { cout << arr[i] << " " ; } } } int main() { int arr[] = { 1, 2, 2, 3, 2, 3, 4 }; int n = sizeof (arr) / sizeof (arr[0]); int k = 2; removeElements(arr, n, k); return 0; } |
chevron_right
filter_none
Java
// Java program to remove the elements which // appear strictly less than k times from the array. import java.util.HashMap; class geeks { public static void removeElements( int [] arr, int n, int k) { // Hash map which will store the // frequency of the elements of the array. HashMap<Integer, Integer> mp = new HashMap<>(); for ( int i = 0 ; i < n; ++i) { // Incrementing the frequency // of the element by 1. if (!mp.containsKey(arr[i])) mp.put(arr[i], 1 ); else { int x = mp.get(arr[i]); mp.put(arr[i], ++x); } } for ( int i = 0 ; i < n; ++i) { // Print the element which appear // more than or equal to k times. if (mp.get(arr[i]) >= k) System.out.print(arr[i] + " " ); } } // Driver code public static void main(String[] args) { int [] arr = { 1 , 2 , 2 , 3 , 2 , 3 , 4 }; int n = arr.length; int k = 2 ; removeElements(arr, n, k); } } // This code is contributed by // sanjeev2552 |
chevron_right
filter_none
Python3
# Python3 program to remove the elements which # appear strictly less than k times from the array. def removeElements(arr, n, k): # Hash map which will store the # frequency of the elements of the array. mp = dict () for i in range (n): # Incrementing the frequency # of the element by 1. mp[arr[i]] = mp.get(arr[i], 0 ) + 1 for i in range (n): # Print the element which appear # more than or equal to k times. if (arr[i] in mp and mp[arr[i]] > = k): print (arr[i], end = " " ) # Driver Code arr = [ 1 , 2 , 2 , 3 , 2 , 3 , 4 ] n = len (arr) k = 2 removeElements(arr, n, k) # This code is contributed by Mohit Kumar |
chevron_right
filter_none
C#
// C# program to remove the elements which // appear strictly less than k times from the array. using System; using System.Collections.Generic; class geeks { public static void removeElements( int [] arr, int n, int k) { // Hash map which will store the // frequency of the elements of the array. Dictionary< int , int > mp = new Dictionary< int , int >(); for ( int i = 0; i < n; ++i) { // Incrementing the frequency // of the element by 1. if (!mp.ContainsKey(arr[i])) mp.Add(arr[i], 1); else { int x = mp[arr[i]]; mp[arr[i]] = mp[arr[i]] + ++x; } } for ( int i = 0; i < n; ++i) { // Print the element which appear // more than or equal to k times. if (mp[arr[i]] >= k) Console.Write(arr[i] + " " ); } } // Driver code public static void Main(String[] args) { int [] arr = { 1, 2, 2, 3, 2, 3, 4 }; int n = arr.Length; int k = 2; removeElements(arr, n, k); } } // This code is contributed by Rajput-Ji |
chevron_right
filter_none
Output:
2 2 3 2 3
Time Complexity – O(N)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.