Compruebe si las dos arrays dadas son iguales (usando Map)

Dadas dos arrays, A[] y B[] , la tarea es verificar si son iguales o no. Los arreglos se consideran iguales si cualquier permutación del arreglo B es igual al arreglo A.

Ejemplos:

Entrada: A[] = [2, 4, 5, 7, 5, 6] y B[] = [4, 2, 5, 5, 6, 7]
Salida:
Explicación: Todos los elementos de la array A están presentes
en la array B y el mismo número de veces.

Entrada: A[] = [2, 5, 8, 9, 78] y B[] = [5, 2, 7, 78, 8]
Salida: No
Explicación: En el arreglo A hay un 9 y en el arreglo B hay es un 7

Enfoque: el problema se puede resolver usando hashmap basado en la siguiente idea:

Dos arreglos serán iguales solo si la frecuencia de los elementos respectivos en ambos arreglos es igual.

Siga los pasos para resolver el problema:

  • Si los tamaños de ambas arrays no son iguales, devuelva NO.
  • Mantenga un hashmap y cuente la frecuencia de ambos elementos de la array
  • Si para algún elemento la frecuencia no es la misma, devuelva NO
  • De lo contrario, devuelva SÍ

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

C++

// C++ code to implement the approach
  
#include <bits/stdc++.h>
using namespace std;
bool isEqual(vector<int> a, vector<int> b,
             int n, int m)
{
    // If size is not same return false
    if (n != m) {
        return 0;
    }
  
    // Create 2 unordered maps to store
    // the frequency
    unordered_map<int, int> mp1, mp2;
    for (int i : a) {
        mp1[i]++;
    }
    for (int i : b) {
        mp2[i]++;
    }
  
    // Compare teh frequency
    for (auto i = mp1.begin(); i != mp1.end(); i++) {
  
        // If frequency not same return false
        if (mp2[i->first] != i->second) {
            return 0;
        }
    }
    return 1;
}
  
// Drivers code
int main()
{
    vector<int> a = { 2, 4, 5, 7, 5, 6 },
                b = { 4, 2, 5, 5, 6, 7 };
    int n = a.size(), m = b.size();
    bool flag = isEqual(a, b, n, m);
  
    // Return 1 if equal
    if (flag) {
        cout << "YES\n";
    }
    else {
        cout << "NO\n";
    }
    return 0;
}
Producción

YES

Complejidad temporal:  O(N) en el caso promedio y O(N 2 ) en el peor de los casos.
Espacio Auxiliar:  O(N)

Publicación traducida automáticamente

Artículo escrito por sahilgangurde08 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 *