2215. 找出两数组的不同
2215. 找出两数组的不同
题目
Given two 0-indexed integer arrays nums1
and nums2
, return a listanswer
of size 2
where:
answer[0]
is a list of alldistinct integers innums1
which arenot present innums2
.answer[1]
is a list of alldistinct integers innums2
which arenot present innums1
.
Note that the integers in the lists may be returned in any order.
Example 1:
Input: nums1 = [1,2,3], nums2 = [2,4,6]
Output: [[1,3],[4,6]]
Explanation: For nums1, nums1[1] = 2 is present at index 0 of nums2, whereas nums1[0] = 1 and nums1[2] = 3 are not present in nums2. Therefore, answer[0] = [1,3].
For nums2, nums2[0] = 2 is present at index 1 of nums1, whereas nums2[1] = 4 and nums2[2] = 6 are not present in nums2. Therefore, answer[1] = [4,6].
Example 2:
Input: nums1 = [1,2,3,3], nums2 = [1,1,2,2]
Output: [[3],[]]
Explanation: For nums1, nums1[2] and nums1[3] are not present in nums2. Since nums1[2] == nums1[3], their value is only included once and answer[0] = [3].
Every integer in nums2 is present in nums1. Therefore, answer[1] = [].
Constraints:
1 <= nums1.length, nums2.length <= 1000
-1000 <= nums1[i], nums2[i] <= 1000
题目大意
给你两个下标从 0
开始的整数数组 nums1
和 nums2
,请你返回一个长度为 2
的列表 answer
,其中:
answer[0]
是nums1
中所有不 存在于nums2
中的 不同 整数组成的列表。answer[1]
是nums2
中所有不 存在于nums1
中的 不同 整数组成的列表。
注意: 列表中的整数可以按 任意 顺序返回。
示例 1:
输入: nums1 = [1,2,3], nums2 = [2,4,6]
输出:[[1,3],[4,6]]
解释: 对于 nums1 ,nums1[1] = 2 出现在 nums2 中下标 0 处,然而 nums1[0] = 1 和 nums1[2] = 3 没有出现在 nums2 中。因此,answer[0] = [1,3]。
对于 nums2 ,nums2[0] = 2 出现在 nums1 中下标 1 处,然而 nums2[1] = 4 和 nums2[2] = 6 没有出现在 nums2 中。因此,answer[1] = [4,6]。
示例 2:
输入: nums1 = [1,2,3,3], nums2 = [1,1,2,2]
输出:[[3],[]]
解释: 对于 nums1 ,nums1[2] 和 nums1[3] 没有出现在 nums2 中。由于 nums1[2] == nums1[3] ,二者的值只需要在 answer[0] 中出现一次,故 answer[0] = [3]。
nums2 中的每个整数都在 nums1 中出现,因此,answer[1] = [] 。
提示:
1 <= nums1.length, nums2.length <= 1000
-1000 <= nums1[i], nums2[i] <= 1000
解题思路
可以通过使用集合来有效地找出在 nums1
中但不在 nums2
中的元素,以及在 nums2
中但不在 nums1
中的元素。
- 集合创建:使用
Set
来去重并存储nums1
和nums2
的元素。 - 过滤独特元素:
- 对于
nums1
,使用filter
方法找出那些不在set2
中的元素。 - 对于
nums2
,使用类似的方法找出那些不在set1
中的元素。
- 对于
- 返回结果:返回一个包含两个数组的列表,其中一个是
nums1
中独特的元素,另一个是nums2
中独特的元素。
复杂度分析
- 时间复杂度:
O(n + m)
,其中n
和m
分别是nums1
和nums2
的长度。 - 空间复杂度:
O(n + m)
,用于存储集合。
代码
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[][]}
*/
var findDifference = function (nums1, nums2) {
// 将 nums1, nums2 的元素分别存入集合
const set1 = new Set(nums1);
const set2 = new Set(nums2);
// 过滤出只在 nums1 中的元素
const answer1 = [...set1].filter((i) => !set2.has(i));
// 过滤出只在 nums2 中的元素
const answer2 = [...set2].filter((i) => !set1.has(i));
return [answer1, answer2];
};
相关题目
题号 | 标题 | 题解 | 标签 | 难度 |
---|---|---|---|---|
349 | 两个数组的交集 | 数组 哈希表 双指针 2+ | ||
350 | 两个数组的交集 II | 数组 哈希表 双指针 2+ | ||
2248 | 多个数组求交集 | 数组 哈希表 计数 1+ |