文章目录
一、题目
2215. Find the Difference of Two Arrays
Given two 0-indexed integer arrays nums1 and nums2, return a list answer of size 2 where:
answer0 is a list of all distinct integers in nums1 which are not present in nums2.
answer1 is a list of all distinct integers in nums2 which are not present in nums1.
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, nums11 = 2 is present at index 0 of nums2, whereas nums10 = 1 and nums12 = 3 are not present in nums2. Therefore, answer0 = 1,3.
For nums2, nums20 = 2 is present at index 1 of nums1, whereas nums21 = 4 and nums22 = 6 are not present in nums2. Therefore, answer1 = 4,6.
Example 2:
Input: nums1 = 1,2,3,3, nums2 = 1,1,2,2
Output: \[3,\[\]]
Explanation:
For nums1, nums12 and nums13 are not present in nums2. Since nums12 == nums13, their value is only included once and answer0 = 3.
Every integer in nums2 is present in nums1. Therefore, answer1 = \[\].
Constraints:
1 <= nums1.length, nums2.length <= 1000
-1000 <= nums1i, nums2i <= 1000
二、题解
cpp
class Solution {
public:
vector<vector<int>> findDifference(vector<int>& nums1, vector<int>& nums2) {
int n1 = nums1.size();
int n2 = nums2.size();
vector<int> res1;
vector<int> res2;
unordered_map<int,int> map1;
unordered_map<int,int> map2;
for(int i = 0;i < n1;i++) map1[nums1[i]]++;
for(int i = 0;i < n2;i++) map2[nums2[i]]++;
for(int i = 0;i < n1;i++){
if(map2[nums1[i]] == 0){
res1.push_back(nums1[i]);
map2[nums1[i]]++;
}
}
for(int i = 0;i < n2;i++){
if(map1[nums2[i]] == 0){
res2.push_back(nums2[i]);
map1[nums2[i]]++;
}
}
vector<vector<int>> res;
res.push_back(res1);
res.push_back(res2);
return res;
}
};