Top K Frequent Words (LaiCode version)

class compare{ bool operator()(pair<int, string> a, pair<int, string> b){ if (a.first < b.first) return true; else if (b.first < a.first) return false; else return b.second < a.second; } }; class Solution { public: vector<string> topKFrequent(vector<string> combo, int k) { // write your solution here // first construct a map unordered_map<string, int> m; // populate the map for (auto c : combo) m[c]++; priority_queue<pair<int, string>, vector< pair<int, string> >, compare) pq; for (unordered_map<string, int>::iterator it = m.begin(); it != m.end(); it++) pq.push(make_pair(it.second, it.first)); vector<string> res; for (int i = 0; i < k; i++){ res.push_back(pq.top.second); pq.pop(); } return res; } };
Easy mistake when defining the comparator...

1 Response

Also corner case when the input vector is empty.

Write a comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.