PHP 程序从两个排序数组中查找最接近的一对

phpserver side programmingprogramming更新于 2025/8/29 6:07:17

什么是 PHP?

PHP(超文本预处理器)是一种流行的 Web 开发脚本语言。它广泛用于创建动态和交互式网页。PHP 代码可以直接嵌入到 HTML 中,允许开发人员无缝地混合使用 PHP 和 HTML。PHP 可以连接数据库、处理表单数据、生成动态内容、处理文件上传、与服务器交互以及执行各种服务器端任务。它支持各种 Web 开发框架,例如 Laravel、Symfony 和 CodeIgniter,这些框架为构建 Web 应用程序提供了额外的工具和功能。 PHP 是一种开源语言,拥有庞大的社区、丰富的文档以及丰富的库和扩展生态系统。

PHP 程序:从两个排序数组中查找最接近的对

给定两个排序数组和一个数字 x,找到和最接近 x 的对,并且该对包含两个数组中的一个元素。

输入

ar1 = [1, 3, 5, 7, 9];
ar2 = [2, 4, 6, 8, 10];
x = 12;

输出

输出为 1 和 10,因为 1+10=11,更接近 12。

示例

<?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], "] 
"; } $ar1 = array(1, 4, 8, 10); $ar2 = array(2, 6, 9); $m = count($ar1); $n = count($ar2); $x = 20; printClosest($ar1, $ar2, $m, $n, $x); ?>

输出

The closest pair is [10, 9]

结论

总而言之,本 PHP 程序采用双指针技术,高效地从两个已排序数组中查找最接近的对。首先,程序将对和与给定数字"x"之间的差初始化为最大值。程序维护两个结果索引 res_l 和 res_r,用于存储最接近对的索引。通过比较当前对和与 x 的绝对差,程序会在遇到更接近的对时持续更新最接近的对。程序会根据当前和大于还是小于 x 来调整指针,从而有效地缩小搜索范围。

该程序的时间复杂度取决于输入数组 m 和 n 的大小,因为它在遍历两个数组时会进行线性扫描。因此,其复杂度为 O(m + n)。本 PHP 程序提供了一种高效的解决方案,可以从两个已排序数组中查找和最接近给定数字 x 的最接近对。通过利用双指针方法,它提供了一种简化的方法来识别具有最小绝对差异的对,从而在各种情况下提供灵活性和准确性。


相关文章