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,
- Primero convierta las tres listas en diccionarios que tengan elementos como claves y sus frecuencias como valor, usando el método Counter() .
- 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