Programa para encontrar la frecuencia de cada elemento en un vector usando map en C++

Dado un vector vec , la tarea es encontrar la frecuencia de cada elemento de vec usando un mapa
Ejemplos: 
 

Entrada: vec = {1, 2, 2, 3, 1, 4, 4, 5} 
Salida: 
1 2 
2 2 
3 1 
4 2 
5 1 
Explicación: 
1 ha ocurrido 2 veces 
2 ha ocurrido 2 veces 
3 ha ocurrido 1 vez 
4 ha ocurrido 2 veces 
5 ha ocurrido 1 vez 
Entrada: v1 = {6, 7, 8, 6, 4, 1} 
Salida: 
1 1 
4 1 
6 2 
7 1 
8 1 
Explicación: 
1 ha ocurrido 1 vez 
4 ha ocurrido 1 6 veces 
ha ocurrido 2 veces 
7 ha ocurrido 1 vez 
8 ha ocurrido 1 vez 
 

Enfoque: 
podemos encontrar la frecuencia de los elementos en un vector usando cuatro pasos dados de manera eficiente: 
 

  1. Recorre los elementos del vector vec dado .
  2. comprobar si el elemento actual está presente en el mapa o no.
  3. Si está presente, actualice la frecuencia del elemento actual; de lo contrario, inserte el elemento con la frecuencia 1 como se muestra a continuación:
  4. Recorra el mapa e imprima la frecuencia de cada elemento almacenado como un valor mapeado.

A continuación se muestra la implementación del enfoque anterior:
 

CPP

#include <bits/stdc++.h>
using namespace std;
 
void printFrequency(vector<int> vec)
{
    // Define an map
    map<int, int> M;
 
    // Traverse vector vec check if
    // current element is present
    // or not
    for (int i = 0; vec[i]; i++) {
 
        // If the current element
        // is not found then insert
        // current element with
        // frequency 1
        if (M.find(vec[i]) == M.end()) {
            M[vec[i]] = 1;
        }
 
        // Else update the frequency
        else {
            M[vec[i]]++;
        }
    }
 
    // Traverse the map to print the
    // frequency
    for (auto& it : M) {
        cout << it.first << ' '
             << it.second << '\n';
    }
}
 
// Driver Code
int main()
{
    vector<int> vec = { 1, 2, 2, 3, 1, 4, 4, 5 };
 
    // Function call
    printFrequency(vec);
    return 0;
}
Producción: 

1 2
2 2
3 1
4 2
5 1

 

Análisis de  
Complejidad: Complejidad de Tiempo: O(n log n) 
Para un vector dado de tamaño n, estamos iterando sobre él una vez y la complejidad de tiempo para buscar elementos en el mapa es O(log n). Entonces, la complejidad del tiempo es O(n log n) 
Complejidad del espacio: O(n) 
Para un vector dado de tamaño n, estamos usando un mapa adicional que puede tener un máximo de n valores clave, por lo que la complejidad del espacio es O(n)
 

Publicación traducida automáticamente

Artículo escrito por ShivaTeja2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *