Dada una array de enteros, elimine todas las ocurrencias de aquellos elementos que aparecen estrictamente más de k veces en la array.
Ejemplos:
Input : arr[] = {1, 2, 2, 3, 2, 3, 4} k = 2 Output : 1 3 3 4 Input : arr[] = {2, 5, 5, 7} k = 1 Output : 2 7
Acercarse:
- Tome un mapa hash, que almacenará la frecuencia de todos los elementos en la array.
- Ahora, atraviesa una vez más.
- Imprime los elementos que aparezcan menores o iguales a k veces.
C++
// C++ program to remove the elements which // appear more 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 // less than or equal to k times. if (mp[arr[i]] <= k) { cout << arr[i] << " "; } } } int main(int argc, char const* argv[]) { 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 more than k times from the array. import java.util.HashMap; import java.util.Map; class GFG { static void RemoveElements(int arr[], int n, int k) { // Hash map which will store the // frequency of the elements of the array. Map<Integer,Integer> mp = new HashMap<>(); for (int i = 0; i < n; ++i) { // Incrementing the frequency // of the element by 1. mp.put(arr[i],mp.get(arr[i]) == null?1:mp.get(arr[i])+1); } for (int i = 0; i < n; ++i) { // Print the element which appear // less than or equal to k times. if (mp.containsKey(arr[i]) && 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 Rajput-Ji
Python3
# Python 3 program to remove the elements which # appear more 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 = {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 which appear # less than or equal to k times. if (mp[arr[i]] <= k): print(arr[i], end = " ") # Driver Code if __name__ == '__main__': arr = [1, 2, 2, 3, 2, 3, 4] n = len(arr) k = 2 RemoveElements(arr, n, k) # This code is contributed by # Sahil_Shelangia
C#
// C# program to remove the elements which // appear more than k times from the array. using System; using System.Collections.Generic; class GFG { 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[arr[i]]++; else mp[arr[i]] = 1; } for (int i = 0; i < n; ++i) { // Print the element which appear // less than or equal to k times. if (mp.ContainsKey(arr[i]) && mp[arr[i]] <= k) { Console.Write(arr[i] + " "); } } } // Driver code static public void Main() { 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 Mohit kumar 29
Javascript
<script> // JavaScript program to remove the elements which // appear more than k times from the array. function RemoveElements(arr,n,k) { // Hash map which will store the // frequency of the elements of the array. let mp = new Map(); for (let i = 0; i < n; ++i) { // Incrementing the frequency // of the element by 1. mp.set(arr[i],mp.get(arr[i]) == null?1:mp.get(arr[i])+1); } for (let i = 0; i < n; ++i) { // Print the element which appear // less than or equal to k times. if (mp.has(arr[i]) && mp.get(arr[i]) <= k) { document.write(arr[i] + " "); } } } // Driver code let arr=[1, 2, 2, 3, 2, 3, 4 ]; let n = arr.length; let k = 2; RemoveElements(arr, n, k); // This code is contributed by unknown2108 </script>
Producción:
1 3 3 4
Complejidad de tiempo : O(N), donde N es el tamaño del entero dado.
Espacio auxiliar : O(N), donde N es el tamaño del entero dado.
Método n.º 2: uso de las funciones integradas de Python:
- Cuente las frecuencias de cada elemento usando la función Contador
- Atraviesa la array.
- Imprime los elementos que aparezcan menores o iguales a k veces.
A continuación se muestra la implementación del enfoque anterior:
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 Code arr = [1, 2, 2, 3, 2, 3, 4] n = len(arr) k = 2 removeElements(arr, n, k) # This code is contributed by vikkycirus
Producción:
1 3 3 4
Complejidad de tiempo : O(N), donde N es el tamaño del entero dado.
Espacio auxiliar : O(N), donde N es el tamaño del entero dado.
Publicación traducida automáticamente
Artículo escrito por imdhruvgupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA