-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path3092-most-frequent-ids.cpp
29 lines (28 loc) · 1.07 KB
/
3092-most-frequent-ids.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public:
// vector<long long> mostFrequentIDs(vector<int>& nums, vector<int>& freq) {
// vector<long long> res;
// multiset<long long> ms;
// unordered_map<int, long long> counter;
// for (auto i = 0; i < nums.size(); i++) {
// auto prev = counter[nums[i]];
// if (ms.count(prev)) ms.erase(ms.find(prev));
// counter[nums[i]] = max(counter[nums[i]] + freq[i], 0LL);
// ms.insert(counter[nums[i]]);
// res.push_back(*ms.rbegin());
// }
// return res;
// }
vector<long long> mostFrequentIDs(vector<int>& nums, vector<int>& freq) {
vector<long long> res;
priority_queue<pair<long long, long long>> ms;
unordered_map<int, long long> counter;
for (auto i = 0; i < nums.size(); i++) {
counter[nums[i]] += freq[i];
ms.push({counter[nums[i]], nums[i]});
while (counter[ms.top().second] != ms.top().first) ms.pop();
res.push_back(ms.top().first);
}
return res;
}
};