Python List Comprehension 从两个数组中找到具有给定总和的对
给定两个不同元素的未排序数组,任务是从两个数组中找到总和等于 x 的所有对。
例子:
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)]
对于这个问题,我们有现有的解决方案,请参考给定两个未排序的数组,找到总和为 x 链接的所有对。我们可以使用列表推导在Python中快速解决这个问题。方法非常简单,我们将考虑所有那些如果 k 位于 arr2则xk 应位于 arr1的对,因此 pair 将是 (xk,k)。
# 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)
复杂度: O(n*n)
输出:
[(5, 3), (4, 4)]