Given an array of integers, remove the elements from the array whose frequency lies in the range [l, r].
Examples:
Input : arr[] = { 1, 2, 3, 3, 2, 2, 5 }
l = 2, r = 3
Output : 1 5
We remove all those elements with frequencies from 2 to 5.Input : arr[] = { 1, 2, 3, 3, 3, 3 }
l = 2, r = 3
Output : 3 3 3 3
Approach :
- Take a hash map, which will store the frequency of all the elements in the array.
- Now, traverse once again.
- Remove the elements whose frequency lies between [l, r].
- Else, print it.
// C++ program to remove the elements whose // frequency appears in the range [l, r] #include "iostream" #include "unordered_map" using namespace std;
void removeElements( int arr[], int n, int l, int r)
{ // 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 whose frequency
// is not in the range [l, r]
if (mp[arr[i]] < l or mp[arr[i] > r]) {
cout << arr[i] << " " ;
}
}
} int main()
{ int arr[] = { 1, 2, 3, 3, 2, 2, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
int l = 2, r = 3;
removeElements(arr, n, l, r);
return 0;
} |
// Java program to remove the elements whose // frequency appears in the range [l, r] import java.util.HashMap;
class GFG {
static void removeElements( int arr[], int n, int l, int r)
{
// 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.
// mp[arr[i]]++;
int val = 0 ;
if (mp.get(arr[i]) == null ) {
val = 1 ;
}
else {
val = mp.get(arr[i]) + 1 ;
}
// System.out.println("--"+mp.get(arr[i]));
mp.put(arr[i], val);
}
for ( int i = 0 ; i < n; ++i) {
// Print the element whose frequency
// is not in the range [l, r]
if (mp.get(arr[i]) < l || mp.get(arr[i]) > r) {
System.out.print(arr[i] + " " );
}
}
}
// Driver code
public static void main(String args[])
{
int arr[] = { 1 , 2 , 3 , 3 , 2 , 2 , 5 };
int n = arr.length;
int l = 2 , r = 3 ;
removeElements(arr, n, l, r);
}
} // This code is contributed by 29AjayKumar |
# Python 3 program to remove the elements # whose frequency appears in the range [l, r] def removeElements(arr, n, l, r):
# Hash map which will store the
# frequency of the elements of the array.
mp = {i: 0 for i in range ( len (arr))}
for i in range (n):
# Incrementing the frequency
# of the element by 1.
mp[arr[i]] + = 1
for i in range (n):
# Print the element whose frequency
# is not in the range [l, r]
if (mp[arr[i]] < l or mp[arr[i] > r]):
print (arr[i], end = " " )
# Driver Code if __name__ = = '__main__' :
arr = [ 1 , 2 , 3 , 3 , 2 , 2 , 5 ]
n = len (arr)
l = 2
r = 3
removeElements(arr, n, l, r);
# This code is contributed by # Sahil_Shelangia |
// C# program to remove the elements whose // frequency appears in the range [l, r] using System;
using System.Collections.Generic;
class GFG {
static void removeElements( int [] arr, int n, int l, int r)
{
// 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.
// mp[arr[i]]++;
int val = 0;
if (!mp.ContainsKey(arr[i])) {
val = 1;
}
else {
val = mp[arr[i]] + 1;
}
if (!mp.ContainsKey(arr[i]))
mp.Add(arr[i], val);
else {
mp.Remove(arr[i]);
mp.Add(arr[i], val);
}
}
for ( int i = 0; i < n; ++i) {
// Print the element whose frequency
// is not in the range [l, r]
if (mp[arr[i]] < l || mp[arr[i]] > r) {
Console.Write(arr[i] + " " );
}
}
}
// Driver code
public static void Main(String[] args)
{
int [] arr = { 1, 2, 3, 3, 2, 2, 5 };
int n = arr.Length;
int l = 2, r = 3;
removeElements(arr, n, l, r);
}
} // This code contributed by Rajput-Ji |
1 5
Time Complexity – O(N)
Recommended Posts:
- Array range queries for elements with frequency same as value
- Fill an array based on frequency where elements are in range from 0 to n-1
- Find frequency of each element in a limited range array in less than O(n) time
- Sum of all odd frequency elements in an array
- Sum of elements in an array having prime frequency
- Sorting Array Elements By Frequency | Set 3 (Using STL)
- XOR of elements in an array having prime frequency
- Find the element having different frequency than other array elements
- Product of elements in an array having prime frequency
- Replace every elements in the array by its frequency in the array
- Elements to be added so that all elements of a range are present in array
- Remove minimum elements from the array such that 2*min becomes more than max
- Remove duplicate elements in an Array using STL in C++
- Remove elements from the array which appear more than k times
- Remove minimum elements from array so that max
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.