两个数组的交集2 2025-08-08 作者 Y Y 1039 字 本文最后编辑于 前,其中的内容可能需要更新。 两个数组的交集2 题目 1234567891011给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)不考虑输出结果的顺序示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9] 解法 12345678910111213141516171819202122232425262728293031323334353637思路:遍历第一个数组,数组值作为map的下标,map的值为每个值出现的次数遍历第二个数组,判断值是否在map的下标里,判断是否出现的次数是否>0,是则写入输出的数组,出现的次数-1这边记录第一个数组中值出现的次数,第二个数组每出现一次相同的值,次数-1,达成返回出现次数少的值的目的代码:/** * @param Integer[] $nums1 * @param Integer[] $nums2 * * @return Integer[] */function intersect($nums1, $nums2){ $map = []; // 记录每个值的数量 foreach ($nums1 as $item) { if (!isset($map[$item])) { $map[$item] = 0; } $map[$item]++; } $data = []; foreach ($nums2 as $item) { // 如果存在item在map里且item的值>0 if (isset($map[$item]) && $map[$item] > 0) { // item的值-1,并且将item写入返回的值中 $map[$item]--; $data[] = $item; } } return $data;} < 上一篇 下一篇 >