Featured image of post LeetCode 75 - 2215. Find the Difference of Two Arrays

LeetCode 75 - 2215. Find the Difference of Two Arrays

Description

Given two 0-indexed integer arrays nums1 and nums2, return a list answer of size 2 where:

  • answer[0] is a list of all distinct integers in nums1 which are not present in nums2.
  • answer[1] 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:

1
2
3
4
5
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 nums1. Therefore, answer[1] = [4,6].

Example 2:

1
2
3
4
5
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

Solutions

Use the set container to remove duplicates, and then use the find() or count() function of the set container to check if the element exists. If it doesn’t exist, put it into the vector.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public:
    vector<vector<int>> findDifference(vector<int>& nums1, vector<int>& nums2) {
        set<int> s1;
        set<int> s2;
        vector<int> r1;
        vector<int> r2;
        for (int i = 0; i < nums1.size(); ++i) {
            s1.insert(nums1[i]);
        }
        for (int i = 0; i < nums2.size(); ++i) {
            s2.insert(nums2[i]);
        }
        for (int num : s1) {
            if (s2.count(num) == 0) {
                r1.push_back(num);
            }
        }
        for (int num : s2) {
            if (s1.count(num) == 0) {
                r2.push_back(num);
            }
        }

        return {r1, r2};
    }
};