PHP程式:查詢兩個已排序陣列中最接近的數對


什麼是PHP?

PHP(超文字預處理器)是一種流行的指令碼語言,專為網頁開發而設計。它廣泛用於建立動態和互動式的網頁。PHP程式碼可以直接嵌入到HTML中,允許開發人員無縫地混合PHP和HTML。PHP可以連線資料庫,處理表單資料,生成動態內容,處理檔案上傳,與伺服器互動,並執行各種伺服器端任務。它支援各種網頁開發框架,例如Laravel、Symfony和CodeIgniter,這些框架提供了構建網頁應用程式的其他工具和功能。PHP是一種開源語言,擁有龐大的社群、豐富的文件和豐富的庫和擴充套件生態系統。

PHP程式:查詢兩個已排序陣列中最接近的數對

給定兩個已排序的陣列和一個數字x,找到其和最接近x的數對,並且該數對的元素分別來自每個陣列。

輸入

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

輸出

Output is 1 and 10 because 1+10=11 which is closer to 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)提供了一種有效的解決方案。透過使用雙指標方法,它提供了一種簡化的方法來識別具有最小絕對差的數對,從而在各種場景中提供靈活性和準確性。

更新於:2023年8月2日

86 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.