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