https://leetcode.cn/problems/most-frequent-ids/description/
看到这个数据范围 最极端情况 如果nums全为一个数 并且数量取到最大 那么范围是10的10次方
需要longlong储存
这题主要运用了哈希表配合multiset实现
哈希表主要用作存储某个数的出现次数 mst则用于记录出现次数并且对其进行排序 得到最大值
因为可能在增删过程中 会有不同的数出现相同的次数 并且删除特定数量的时候 需要改变数量 所以不可以用单纯的一个max变量储存最大值
class Solution {
public:vector<long long> mostFrequentIDs(vector<int>& nums, vector<int>& freq) {long long cnt[100001] = {0}; //用于存储出现次数 初始化为0;multiset<long long> mst;multiset<long long>::iterator iter; //用于存储增删的数的位置vector<long long> ans;for ( int i = 0; i < nums.size(); ++i ){int x = nums[i]; //找到当前数组的数long long &c = cnt[x]; //记录出现次数iter = mst.find(c); //找到这个数量在mst的位置if ( iter != mst.end() ){ //存在这个数量mst.erase( iter);}c += freq[i]; //更改数量mst.insert(c); //重新加入mstans.push_back( *mst.rbegin() );}return ans;}
};