两个数组的交集 2025-08-08 作者 Y Y 948 字 本文最后编辑于 前,其中的内容可能需要更新。 两个数组的交集 题目 1234567891011给定两个数组nums1和nums2,返回它们的交集,输出结果中的每个元素一定是唯一的不考虑输出结果的顺序示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]解释:[4,9] 也是可通过的 解法 123456789101112131415161718192021222324252627282930313233思路:遍历第一个数组,数组值作为map的下标,map的值为false,遍历第二个数组,判断值是否在map的下标里,且map的只为false将值加入到最后输出的数组中,将map的值设置为true不考虑简单写法 return array_unique(array_intersect($nums1, $nums2));代码:/** * @param Integer[] $nums1 * @param Integer[] $nums2 * * @return Integer[] */function intersection($nums1, $nums2){ $map = []; // 遍历第一个数组,设置map的同时去重 foreach ($nums1 as $item) { $map[$item] = false; } $res = []; foreach ($nums2 as $item) { // 如果在第二个数组中存在map的下标,且下标对应的值为false if (isset($map[$item]) && !$map[$item]) { $res[] = $item; // 设置下标的值为true, 防止重复的数字写入数组 $map[$item] = true; } } return $res;} < 上一篇 下一篇 >