给定一个整数数组,从数组中删除频率在 [l, r] 范围内的元素。
例子:
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
方法 :
- 取一个哈希映射,它将存储数组中所有元素的频率。
- 现在,再次穿越。
- 删除频率在 [l, r] 之间的元素。
- 否则,打印它。
C++
// 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 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
// 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 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
Python3
# 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#
// 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 mp = new Dictionary();
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
Javascript
输出:
1 5
时间复杂度 – O(N)