#include "leetcode.h" struct Compare { bool operator()(pair a, pair b) { if (a.first == b.first) return a.second > b.second; else return a.first < b.first; } }; class Solution { public: vector topKFrequent(vector &words, int k) { unordered_map um; for (int i = 0; i < words.size(); i++) um[words[i]]++; priority_queue, vector>, Compare> pqpvpc; for (auto i : um) pqpvpc.push({i.second, i.first}); vector ans; while (k--) { ans.push_back(pqpvpc.top().second); pqpvpc.pop(); } return ans; } };