Comprensión de la lista de Python para encontrar un par con la suma dada de dos arrays

Dados dos arreglos no ordenados de elementos distintos, la tarea es encontrar todos los pares de ambos arreglos cuya suma sea igual a x. 

Ejemplos:

Input :  arr1 = [-1, -2, 4, -6, 5, 7]
         arr2 = [6, 3, 4, 0]  
         x = 8
Output : [(5, 3), (4, 4)]
         

Input : arr1 = [1, 2, 4, 5, 7] 
        arr2 = [5, 6, 3, 4, 8]  
        x = 9
Output : [(1, 8), (4, 5), (5, 4)]

Tenemos una solución existente para este problema, consulte Dadas dos arrays no ordenadas, encuentre todos los pares cuya suma sea x enlace. Podemos resolver este problema rápidamente en python usando List comprehension . El enfoque es muy simple, consideraremos todos aquellos pares para los cuales si k está en arr2 entonces xk debería estar en arr1 , entonces el par será (xk,k). 

Implementación:

Python3

# Function to find all pairs whose sum is x in
# two arrays
 
def allPairs(arr1,arr2,x):
     
    # finds all pairs in two arrays
    # whose sum is x
    print ([(x-k,k) for k in arr2 if (x-k) in arr1])
 
# Driver program
if __name__ == "__main__":
    arr1 = [-1, -2, 4, -6, 5, 7]
    arr2 = [6, 3, 4, 0]
    x = 8
    allPairs(arr1,arr2,x)
Producción

[(5, 3), (4, 4)]

Complejidad : O(n*n) 

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 *