Pair with given sum Python
PROGRAM TO FIND THE PAIR IN ARRAY WHOSE SUM IS CLOSEST TO THE GIVEN NUMBER
OUTPUT
The closest pair is 22 and 30
CREDITS: https://www.geeksforgeeks.org/given-sorted-array-number-x-find-pair-array-whose-sum-closest-x/
# A sufficiently large value greater
# than any
# element in the input array
MAX_VAL
=
1000000000
#Prints the pair with sum closest to x
def
printClosest(arr, n, x):
# To store indexes of result pair
res_l, res_r
=
0
,
0
#Initialize left and right indexes
# and difference between
# pair sum and x
l, r, diff
=
0
, n
-
1
, MAX_VAL
# While there are elements between l and r
while
r > l:
# Check if this pair is closer than the
# closest pair so far
if
abs
(arr[l]
+
arr[r]
-
x) < diff:
res_l
=
l
res_r
=
r
diff
=
abs
(arr[l]
+
arr[r]
-
x)
if
arr[l]
+
arr[r] > x:
# If this pair has more sum, move to
# smaller values.
r
-
=
1
else
:
# Move to larger values
l
+
=
1
print
(
'The closest pair is {} and {}'
.
format
(arr[res_l], arr[res_r]))
# Driver code to test above
if
__name__
=
=
"__main__"
:
arr
=
[
10
,
22
,
28
,
29
,
30
,
40
]
n
=
len
(arr)
x
=
54
printClosest(arr, n, x)
The closest pair is 22 and 30
Comments
Post a Comment