两个排过序的数组,找出其中交集元素

思路:取出数组第一个元素对比另外一个数组的第一个元素,如果相同,得到交集元素,两个数组下标各自+1,如果第一个小于第二个,第二个下标不变,第一个数组下标+1,如果第一个大于第二个,第一个下标不变,第二个下标+1。

代码(PHP):

function array_sort_intersect($a, $b)
{
	$same = [];
	$i = 0;
	$ak = 0;
	while ($ak < count($a) && $i < count($b)) {
		if ($a[$ak] < $b[$i]) {
			$ak += 1;
		}elseif ($a[$ak] == $b[$i]) {
			$same[] = $b[$i];
			$ak += 1;
			$i += 1;
		}else{
			$i += 1;
		}
	}
	return $same;
}
$a = [1, 2, 3, 4, 5, 10, 23, 89, 100];
$b = [2, 4, 34, 89, 99, 100];
var_dump($a, $b);