Easiest Approach
Idea\n- Working with arrays is troublesome since they are ordered so instead we convert them to sets.\n- In particular, ordered sets would require higher time c
# Idea\n- Working with arrays is troublesome since they are ordered so instead we convert them to sets.\n- In particular, ordered sets would require higher time complexity so we use unordered sets which accomplish the same task but faster.\n- Using sets also solves any issues with duplicate integers within an array. \n- We will iterate through `set1` to check whether `set2` contains any common elements. \n- Every common element we find will go into `set3`.\n- We do not directly remove from `set1` and`set2` because this messes up the for loop iterations. \n- Finally, we iterate through `set3` which is all the common elements and we remove them from both `set1` and `set2`. \n- Now, `set1` and `set2` are left with only **distinct** elements.\n\n# Code\n```\nclass Solution {\npublic:\n    vector<vector<int>> findDifference(vector<int>& nums1, vector<int>& nums2) {\n        // Initialize a set for each array and a common set\n        unordered_set<int> set1(nums1.begin(), nums1.end());\n        unordered_set<int> set2(nums2.begin(), nums2.end());\n        unordered_set<int> set3;\n\n        // Find common values of each set\n        for (auto p : set1){\n            if (set2.find(p) != set2.end()){\n                set3.insert(p);\n            }\n        }\n\n        // Remove common elements from both sets\n        for (auto p : set3){\n            set1.erase(p), set2.erase(p);\n        }\n\n        // Translate sets into array answer\n        vector<vector<int>> res;\n        res.push_back(vector<int>(set1.begin(), set1.end()));\n        res.push_back(vector<int>(set2.begin(), set2.end()));\n        return res;\n    }\n};\n```\n### If this was helpful, please leave an upvote! Thank you :)
['C++']