1122. Relative Sort Array

class Solution {
public:
    vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2)
    {
        map<int, int> countMap;
        for (int num : arr1) ++countMap[num];

        vector<int> res;
        for (int num : arr2)
        {
            for (int i = 0; i < countMap[num]; ++i)
            {
                res.push_back(num);
            }
            countMap.erase(num);
        }

        for (auto a : countMap)
        {
            for (int i = 0; i < a.second; ++i)
            {
                res.push_back(a.first);
            }
        }
        return res;
    }
};
  • T: O(N+M+K)O(N + M + K)
  • S: O(K)O(K)