PHP 查找两个有序数组的相同元素

答案

  1. function findArrayCommon($arr1, $arr2)
  2. {
  3. $common = array();
  4. $i = 0;
  5. $j = 0;
  6. $count1 = count($arr1);
  7. $count2 = count($arr2);
  8. while ($i < $count1 && $j < $count2) {
  9. if ($arr1[$i] < $arr2[$j]) {
  10. $i++;
  11. } elseif ($arr1[$i] > $arr2[$j]) {
  12. $j++;
  13. } else {
  14. $common[] = $arr1[$i];
  15. $i++;
  16. $j++;
  17. }
  18. }
  19. return array_values(array_unique($common));
  20. }

答案解析

测试代码:

  1. $arr1 = array(1, 2, 3, 4, 5, 5, 6, 7, 8);
  2. $arr2 = array(1, 3, 3, 5, 5, 5, 6, 6, 9);
  3. $res = findArrayCommon($arr1, $arr2);
  4. // 输出:[1,3,5,6]
  5. print_r(json_encode($res));