求两个数组元素的交集

实现方式:

  1. 先用hash表记录第一个数组中的元素【放在key】,和出现的次数【放在value】。
  2. 然后再遍历第二个数组,如果找到对应元素,则添加这个元素到返回数组里。
  3. 如果value值大于1,HashMap中的value值减 1,表示已经找到一个相同的了。
  4. 如果value值等于1,则删除该元素。
/**
 * 求两个数组的交集
 * param array $nums1
 * param array $nums2
 * return array
 */
function intersect(array $nums1, array $nums2):array {
	$result = [];
	
	$hash = [];
	for($i=0; $i 1){
				$hash[$nums2[$i]]--;
			}else{
				unset($hash[$nums2[$i]]);
			}
		}
	}
	
	return $result;
}

//example
$nums1 = [4,9,5];
$nums2 = [9,4,9,8,4];
print_r(intersect($nums1, $nums2));

//output
Array
(
    [0] => 9
    [1] => 4
)

 

你可能感兴趣的:(常见算法)