程式語言 - LeetCode - C++ - 2215. Find the Difference of Two Arrays



題目:


解答:

class Solution {
public:
    vector<vector<int>> findDifference(vector<int>& nums1, vector<int>& nums2) {
        #define OFFSET   1000
        #define MAX_SIZE 2001

        int i = 0;
        vector<int> s1(MAX_SIZE, 0);
        vector<int> s2(MAX_SIZE, 0);

        for (i = 0; i < nums1.size(); i++) {
            s1[nums1[i] + OFFSET] += 1;
        }

        for (i = 0; i < nums2.size(); i++) {
            s2[nums2[i] + OFFSET] += 1;
        }

        vector<int> t;
        vector<vector<int>> r;

        for (i = 0; i < nums1.size(); i++) {
            if (s2[nums1[i] + OFFSET] == 0) {
                s2[nums1[i] + OFFSET] += 1;
                t.push_back(nums1[i]);
            }
        }
        r.push_back(t);

        t.clear();
        for (i = 0; i < nums2.size(); i++) {
            if (s1[nums2[i] + OFFSET] == 0) {
                s1[nums2[i] + OFFSET] += 1;
                t.push_back(nums2[i]);
            }
        }
        r.push_back(t);

        return r;
    }
};