PHP Program to 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
PHP
<?php
function printClosest( $ar1 , $ar2 ,
$m , $n , $x )
{
$diff = PHP_INT_MAX;
$res_l ;
$res_r ;
$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 --;
else
$l ++;
}
echo "The closest pair is [" , $ar1 [ $res_l ], ", " , $ar2 [ $res_r ], "] \n" ;
}
$ar1 = array (1, 4, 5, 7);
$ar2 = array (10, 20, 30, 40);
$m = count ( $ar1 );
$n = count ( $ar2 );
$x = 38;
printClosest( $ar1 , $ar2 , $m , $n , $x );
?>
|
Output:
The closest pair is [7, 30]
Time Complexity : O(m+n) i.e. linear.
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...