Encontrar el elemento máximo que es común en n matrices diferentes?

Hoy he pedido un problema similar para encontrar el elemento máximo que es común en dos matrices. Tengo un par de buenas soluciones aquí ( Encuentra el máximo elemento que es común en dos matrices? ).

Ahora se me ocurrió, ¿qué pasa si en lugar de dos matrices tenemos que encontrar el elemento máximo que es común en n matrices diferentes?

Ejemplo:

 array1 = [1,5,2,4,6,88,34]
 array2 = [1,5,6,2,34]
 array3 = [1,34]
 array4 = [7,99,34]

Here the maximum element which is common in all the arrays is 34.

¿Es una buena idea crear un hashmap de array1, array2 ..... array (N-1) por separado y luego verificar cada elemento de arrayN en cada uno de estos hashmaps manteniendo un seguimiento del elemento máximo (cuando está presente en todos los hashmaps? )?

¿Podemos tener mejores soluciones que esto?

0

2 Respuestas

hashmap no es bueno para realizar un seguimiento de los elementos máximos. lo que quieres es un montón o hashset máximo.

creas n max heap y recorres n de ellos. tomas el elemento máximo común. esto podría ser difícil de implementar.

otro enfoque sería encontrar la intersección de todos los conjuntos y tomar el máximo desde la intersección. en este caso, puede usar hashset.

0
agregado
¿por qué es el voto abajo? ¿Esto esta mal?
agregado el autor DarthVader, fuente
Estoy bastante seguro de crear conjuntos a partir de las matrices, y luego encontrar que el máximo de la intersección es la solución más elegante. La solución de montón parece torpe ...
agregado el autor WLPhoenix, fuente
For each array A_n:
  Add all elements in A_n to a hashset, H_n

Create a hashmap, M, which maps values to counts.
For each hashset H_n:
  For each value, v, in H_n:
    M[v]++

Go through M for the highest value with count == N

Esto se ejecutará en O (n) tiempo y espacio, donde n es la cantidad total de elementos en todas las matrices. También trata adecuadamente los elementos que se duplican en una única matriz, que no mencionó, pero que pueden causar problemas para algunos algoritmos. Si sabe que no tendrá elementos duplicados en una sola matriz, puede omitir el primer paso y agregar valores a M directamente desde las matrices.

0
agregado
¿Alguien quiere explicar por qué he votado negativamente sobre esto? Bastante seguro de que no puede vencer el tiempo de O (n), y el espacio de O (n) no parecía tan malo.
agregado el autor Running Wild, fuente