Dada una array de enteros arr[] de tamaño N , la tarea es contar todos los elementos de la array que tienen una frecuencia igual a su valor.
Ejemplos:
Entrada: arr[] = {3, 2, 2, 3, 4, 3}
Salida: 2
La frecuencia del elemento 2 es 2
La frecuencia del elemento 3 es 3
La frecuencia del elemento 4 es 1
2 y 3 son elementos que tienen la misma frecuencia que es valiosoEntrada: arr[] = {1, 2, 3, 4, 5, 6}
Salida: 1
Enfoque: almacene la frecuencia de cada elemento de la array usando el mapa y, finalmente, cuente todos los elementos cuya frecuencia sea igual a su valor.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to count the elements // having frequency equals to its value #include <bits/stdc++.h> using namespace std; // Function to find the count int find_maxm(int arr[], int n) { // Hash map for counting frequency map<int, int> mpp; for (int i = 0; i < n; i++) { // Counting freq of each element mpp[arr[i]] += 1; } int ans = 0; for (auto x : mpp) { int value = x.first; int freq = x.second; // Check if value equals to frequency // and increment the count if (value == freq) { ans++; } } return ans; } // Driver code int main() { int arr[] = { 3, 2, 2, 3, 4, 3 }; int n = sizeof(arr) / sizeof(arr[0]); // Function call cout << find_maxm(arr, n); return 0; }
Java
// Java program to count the elements // having frequency equals to its value import java.util.*; class GFG{ // Function to find the count static int find_maxm(int arr[], int n) { // Hash map for counting frequency HashMap<Integer,Integer> mp = new HashMap<Integer,Integer>(); for (int i = 0; i < n; i++) { // Counting freq of each element if(mp.containsKey(arr[i])){ mp.put(arr[i], mp.get(arr[i])+1); }else{ mp.put(arr[i], 1); } } int ans = 0; for (Map.Entry<Integer,Integer> x : mp.entrySet()){ int value = x.getKey(); int freq = x.getValue(); // Check if value equals to frequency // and increment the count if (value == freq) { ans++; } } return ans; } // Driver code public static void main(String[] args) { int arr[] = { 3, 2, 2, 3, 4, 3 }; int n = arr.length; // Function call System.out.print(find_maxm(arr, n)); } } // This code is contributed by Princi Singh
Python3
# Python3 program to count the elements # having frequency equals to its value # Function to find the count def find_maxm(arr, n): # Hash map for counting frequency mpp = {} for i in range (0, n): # Counting freq of each element if arr[i] in mpp: mpp[arr[i]] = mpp[arr[i]] + 1 else: mpp[arr[i]] = 1 ans = 0 for key in mpp: value = key freq = mpp[key] # Check if value equals to frequency # and increment the count if value == freq: ans = ans + 1 return ans # Driver code if __name__ == "__main__": arr = [ 3, 2, 2, 3, 4, 3 ] n = len(arr) # Function call print(find_maxm(arr, n)) # This code is contributed by akhilsaini
C#
// C# program to count the elements // having frequency equals to its value using System; using System.Collections.Generic; class GFG{ // Function to find the count static int find_maxm(int []arr, int n) { // Hash map for counting frequency Dictionary<int,int> mp = new Dictionary<int,int>(); for (int i = 0; i < n; i++) { // Counting freq of each element if(mp.ContainsKey(arr[i])){ mp[arr[i]] = mp[arr[i]] + 1; }else{ mp.Add(arr[i], 1); } } int ans = 0; foreach (KeyValuePair<int,int> x in mp){ int value = x.Key; int freq = x.Value; // Check if value equals to frequency // and increment the count if (value == freq) { ans++; } } return ans; } // Driver code public static void Main(String[] args) { int []arr = { 3, 2, 2, 3, 4, 3 }; int n = arr.Length; // Function call Console.Write(find_maxm(arr, n)); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // JavaScript program to count the elements // having frequency equals to its value // Function to find the count function find_maxm(arr, n) { // Hash map for counting frequency let mpp = new Map(); for (let i = 0; i < n; i++) { // Counting freq of each element if(mpp.has(arr[i])){ mpp.set(arr[i], mpp.get(arr[i]) + 1) }else{ mpp.set(arr[i], 1) } } let ans = 0; for (let x of mpp) { let value = x[0]; let freq = x[1]; // Check if value equals to frequency // and increment the count if (value == freq) { ans++; } } return ans; } // Driver code let arr = [ 3, 2, 2, 3, 4, 3 ]; let n = arr.length; // Function call document.write(find_maxm(arr, n)); // This code is contributed by _saurabh_jaiswal </script>
2
Método #2: Usar colecciones.Contador()
Podemos resolver este problema rápidamente usando el método python Counter() . El enfoque es muy simple.
- Primero cree un diccionario usando el método Counter que tenga elementos como claves y sus frecuencias como valores
- cuente todos los elementos cuya frecuencia es igual a su valor (clave)
A continuación se muestra la implementación del enfoque anterior:
Python3
# Python3 program to count the elements # having frequency equals to its value # importing counter from collections from collections import Counter # Function to find the count def findElements(arr, n): # Now create dictionary using counter method # which will have elements as key and their # frequencies as values Element_Counter = Counter(arr) ans = 0 for key in Element_Counter: value = key freq = Element_Counter[key] # Check if value equals to frequency # and increment the count if value == freq: ans = ans + 1 return ans # Driver code arr = [3, 2, 2, 3, 4, 3] n = len(arr) # Function call print(findElements(arr, n)) # This code is contributed by vikkycirus
Producción:
2
Publicación traducida automáticamente
Artículo escrito por mohit kumar 29 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA