使用:$nums2 = [2,4,6,7,8,99];
$nums1 = [1,2,5,9,9,66,89,90,99,99];
var_dump(intersection($nums1, $nums2));
复杂度分析:
时间复杂度:O(n^2)
解法四:双指针
思路分析:
先把两个数组排序,通过双指针往前推来进行查找
PHP 代码实现:/**
* @param Integer[] $nums1
* @param Integer[] $nums2
* @return Integer[]
*/
function intersection($nums1, $nums2) {
sort($nums1);
sort($nums2);
$i = $j = 0;
$res = [];
while($i < count($nums1) && $j < count($nums2)){
if($nums1[$i] == $nums2[$j]){
$res[] = $nums1[$i];
$i++;
$j++;
}elseif($nums1[$i] < $nums2[$j]){
$i++;
}elseif($nums1[$i] > $nums2[$j]){
$j++;
}
}
return array_unique($res);
}
使用:$nums2 = [2,4,6,7,8,99];
$nums1 = [1,2,5,9,9,66,89,90,99,99];
var_dump(intersection($nums1, $nums2));
复杂度分析:
时间复杂度:O(nlogn)
更多php相关知识,请访问php教程!