Skip to content

Latest commit

 

History

History
53 lines (45 loc) · 756 Bytes

求两个有序数组的公共元素.md

File metadata and controls

53 lines (45 loc) · 756 Bytes

求两个有序数组的公共元素

代码

<?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)
}