Python Program for Find the closest pair from two sorted arrays
Last Updated :
16 Jun, 2022
Given two sorted arrays and a number x, find the pair whose sum is closest to x and the pair has an element from each array.
We are given two arrays ar1[0…m-1] and ar2[0..n-1] and a number x, we need to find the pair ar1[i] + ar2[j] such that absolute value of (ar1[i] + ar2[j] – x) is minimum.
Example:
Input: ar1[] = {1, 4, 5, 7};
ar2[] = {10, 20, 30, 40};
x = 32
Output: 1 and 30
Input: ar1[] = {1, 4, 5, 7};
ar2[] = {10, 20, 30, 40};
x = 50
Output: 7 and 40
Python3
import sys
def printClosest(ar1, ar2, m, n, x):
diff = sys.maxsize
l = 0
r = n - 1
while (l < m and r > = 0 ):
if abs (ar1[l] + ar2[r] - x) < diff:
res_l = l
res_r = r
diff = abs (ar1[l] + ar2[r] - x)
if ar1[l] + ar2[r] > x:
r = r - 1
else :
l = l + 1
print ( "The closest pair is [" ,
ar1[res_l], ", " , ar2[res_r], "]" )
ar1 = [ 1 , 4 , 5 , 7 ]
ar2 = [ 10 , 20 , 30 , 40 ]
m = len (ar1)
n = len (ar2)
x = 38
printClosest(ar1, ar2, m, n, x)
|
Output:
The closest pair is [ 7 , 30 ]
Time Complexity : O(n)
Auxiliary Space : O(1)
Please refer complete article on Find the closest pair from two sorted arrays for more details!
Share your thoughts in the comments
Please Login to comment...