# Remove elements that appear strictly less than k times

• Difficulty Level : Basic
• Last Updated : 28 May, 2021

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 :

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

• Take a hash map, which will store the frequency of all the elements in the array.
• Now, traverse once again.
• Remove the elements which appear 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 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;}

## 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 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

## 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 Codearr = [1, 2, 2, 3, 2, 3, 4]n = len(arr)k = 2removeElements(arr, n, k) # This code is contributed by Mohit Kumar

## 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 mp = new Dictionary();          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

## Javascript


Output:

2 2 3 2 3

Time Complexity: O(N)

#### Method #2:Using Built-in Python functions:

• Count the frequencies of every element using Counter() function
• Traverse the array.
• Remove the elements which appear strictly less than k times.
• Else, print it.

Below is the implementation of the above approach:

## Python3

 # Python3 program to remove the elements which# appear strictly less than k times from the array.from collections import Counter def removeElements(arr, n, k):     # Calculating frequencies using    # Counter function    freq = Counter(arr)    for i in range(n):         # Print the element which appear        # more than or equal to k times.        if (freq[arr[i]] >= k):            print(arr[i], end=" ")  # Driver Codearr = [1, 2, 2, 3, 2, 3, 4]n = len(arr)k = 2removeElements(arr, n, k) # This code is contributed by vikkycirus

Output:

2 2 3 2 3

My Personal Notes arrow_drop_up