思路:先排序,再用双指针法。
class Solution {
/**
* @param Integer[] $nums1
* @param Integer[] $nums2
* @return Integer[]
*/
function intersect($nums1, $nums2) {
sort($nums1);
sort($nums2);
$index1 = 0;
$index2 = 0;
$result = [];
while($index1 <count($nums1) && $index2 < count($nums2)) {
if($nums1[$index1] == $nums2[$index2]) {
$result[] = $nums1[$index1];
$index1++;
$index2++;
}else if($nums1[$index1] < $nums2[$index2]) {
$index1++;
}else{
$index2++;
}
}
return $result;
}
}
思路:
先统计数组1元素个数,再循环数组2,查询数组2元素是否存在统计数组中,并且统计值大于0,把存在的元素添加到结果数组。
class Solution {
/**
* @param Integer[] $nums1
* @param Integer[] $nums2
* @return Integer[]
*/
function intersect($nums1, $nums2) {
$nums1_count = array_count_values($nums1);
$result = [];
for($i=0 ; $i<count($nums2);$i++) {
if(isset($nums1_count[$nums2[$i]]) && $nums1_count[$nums2[$i]] >0){
$result[] = $nums2[$i];
$nums1_count[$nums2[$i]]--;
}
}
return $result;
}
}

被折叠的 条评论
为什么被折叠?



