力扣3092.最高频率的ID
-
懒删除堆
- 每个freq只会影响对应下标的nums
- 因此若栈顶元素和当前它的频率不匹配时 说明被修改了
- 直接弹出 直到找到匹配的
-
class Solution { public: vector<long long> mostFrequentIDs(vector<int>& nums, vector<int>& freq) { int n = nums.size(); vector<long long> ans(n); unordered_map<int,long long> cnt; priority_queue<pair<long long,int>> pq; for(int i=0;i<n;i++) { int x = nums[i]; cnt[x] += freq[i]; pq.emplace(cnt[x],x); //不匹配 while(pq.top().first != cnt[pq.top().second]) pq.pop(); ans[i] = pq.top().first; } return ans; } };