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: Sí
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; }
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