代码
<?php
/**
* 求两个有序数组的公共元素
*
* @param $arr1
* @param $arr2
* @return array
*/
function common($arr1, $arr2)
{
$len1 = count($arr1);
$len2 = count($arr2);
// 公共元素
$common = [];
$i = $j = 0;
while ($i < $len1 && $j < $len2) {
if ($arr1[$i] > $arr2[$j]) {
$j++;
} elseif ($arr1[$i] < $arr2[$j]) {
$i++;
} else {
$common[] = $arr1[$i];
$i++;
$j++;
}
}
return $common;
}
// 测试
$arr1 = [1, 2, 3, 5, 6, 7, 10];
$arr2 = [2, 7, 11, 12];
var_dump(common($arr1, $arr2));
运行结果
array(2) {
[0]=>
int(2)
[1]=>
int(7)
}