Nota: encuentre elementos comunes en tres arrays ordenadas por intersección de diccionario

Dadas tres arrays ordenadas en orden no decreciente, imprima todos los elementos comunes en estas arrays.

Ejemplos:

Input:  ar1 = [1, 5, 10, 20, 40, 80]
        ar2 = [6, 7, 20, 80, 100]
        ar3 = [3, 4, 15, 20, 30, 70, 80, 120]
Output: [80, 20]

Input:  ar1 = [1, 5, 5]
        ar2 = [3, 4, 5, 5, 10]
        ar3 = [5, 5, 10, 20]
Output: [5, 5]

Tenemos una solución existente para este problema, consulte el enlace Buscar elementos comunes en tres arrays ordenadas . Podemos resolver este problema rápidamente en python usando la intersección de diccionarios. El enfoque es simple,

  1. Primero convierta las tres listas en diccionarios que tengan elementos como claves y sus frecuencias como valor, usando el método Counter() .
  2. Ahora realice la operación de intersección para tres diccionarios, esto dará como resultado que el diccionario tenga elementos comunes entre las tres listas de arreglos con sus frecuencias.
# Function to find common elements in three
# sorted arrays
from collections import Counter
  
def commonElement(ar1,ar2,ar3):
     # first convert lists into dictionary
     ar1 = Counter(ar1)
     ar2 = Counter(ar2)
     ar3 = Counter(ar3)
     
     # perform intersection operation
     resultDict = dict(ar1.items() & ar2.items() & ar3.items())
     common = []
      
     # iterate through resultant dictionary
     # and collect common elements
     for (key,val) in resultDict.items():
          for i in range(0,val):
               common.append(key)
  
     print(common)
  
# Driver program
if __name__ == "__main__":
    ar1 = [1, 5, 10, 20, 40, 80]
    ar2 = [6, 7, 20, 80, 100]
    ar3 = [3, 4, 15, 20, 30, 70, 80, 120]
    commonElement(ar1,ar2,ar3)

Producción:

[80, 20]

Publicación traducida automáticamente

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