Encontre o elemento máximo que é comum em diferentes matrizes?

Hoje cedo eu perguntei problema semelhante para encontrar o elemento máximo que é comum em duas matrizes. Eu tenho algumas boas soluções aqui ( Encontre o máximo elemento que é comum em duas matrizes? ).

Agora me ocorreu, e se em vez de dois arrays nós tivermos que encontrar o elemento máximo que é comum em arrays diferentes?

Exemplo:

 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.

É uma boa idéia criar um hashmap da matriz1, matriz2 ..... matriz (N-1) separadamente e, em seguida, verificar cada elemento da matrizN em cada um desses hashmaps, mantendo o controle do elemento máximo (quando presente em todos os hashmaps )?

Podemos ter soluções melhores do que isso?

0

2 Respostas

hashmap não é bom para acompanhar os elementos max. o que você quer é um heap ou hashset máximo.

você cria n max heap e você percorre n deles. você pega o elemento max comum. isso pode ser difícil de implementar.

Outra abordagem seria encontrar a interseção de todos os conjuntos e tirar o máximo da interseção. Neste caso, você pode usar o hashset.

0
adicionado
porque é que o downvote? isso está errado?
adicionado o autor DarthVader, fonte
Tenho certeza que criar conjuntos a partir dos arrays, então encontrar o máximo da interseção é a solução mais elegante. A solução heap parece desajeitada ...
adicionado o autor WLPhoenix, fonte
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

Isso será executado em O (n) tempo e espaço, onde n é o número total de elementos em todas as matrizes. Ele também lida adequadamente com elementos sendo duplicados em uma única matriz, que você não mencionou, mas que pode causar problemas para alguns algoritmos. Se você souber que não terá elementos duplicados em uma única matriz, poderá ignorar a primeira etapa e adicionar valores a M diretamente das matrizes.

0
adicionado
Alguém quer explicar por que eu tenho downvoted sobre isso? Bastante certo que você não pode bater o tempo O (n), e O (n) espaço não parece tão ruim assim.
adicionado o autor Running Wild, fonte