Medium

Most Popular Video CreatorC++

Full explanation · Time O(n) · Space O(n)

// Time:  O(n)
// Space: O(n)

// hash table
class Solution {
public:
    vector<vector<string>> mostPopularCreator(vector<string>& creators, vector<string>& ids, vector<int>& views) {
        unordered_map<string, int> cnt;
        unordered_map<string, pair<int, string>> lookup;
        for (int i = 0; i < size(creators); ++i) {
            cnt[creators[i]] += views[i];
            if (!lookup.count(creators[i])) {
                lookup[creators[i]] = {-views[i], ids[i]};
                continue;
            }
            lookup[creators[i]] = min(lookup[creators[i]], pair(-views[i], ids[i]));
        }
        int mx = 0;
        for (const auto& [_, v] : cnt) {
            mx = max(mx, v);
        }
        vector<vector<string>> result;
        for (const auto& [k, v] : cnt) {
            if (v != mx) {
                continue;
            }
            result.push_back({k, lookup[k].second});
        }
        return result;
    }
};