aboutsummaryrefslogtreecommitdiff
path: root/top_k_freq_words.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'top_k_freq_words.cpp')
-rw-r--r--top_k_freq_words.cpp29
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;
+ }
+};