diff options
Diffstat (limited to 'top_k_freq_words.cpp')
-rw-r--r-- | top_k_freq_words.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/top_k_freq_words.cpp b/top_k_freq_words.cpp new file mode 100644 index 0000000..eaf31d5 --- /dev/null +++ b/top_k_freq_words.cpp @@ -0,0 +1,29 @@ +#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; + } +}; |