题目:1224. 最大相等频率
思路:哈希表
class Solution {
public:
int maxEqualFreq(vector<int>& nums) {
unordered_map<int,int> mp;
//记录数字出现的次数
unordered_map<int,int> cnt;
//记录次数对应的数字个数
int res = 0;
int maxCnt = 0;
//最大的次数
int n = nums.size();
for(int i=0;i<n;i++){
mp[nums[i]]++;
cnt[mp[nums[i]]]++;
cnt[mp[nums[i]]-1]--;
maxCnt = max(maxCnt,mp[nums[i]]);
if(maxCnt == 1 ||
(cnt[maxCnt]==1 && (cnt[maxCnt-1]+1)*(maxCnt-1)==(i)) ||
(cnt[1]==1 && cnt[maxCnt]*maxCnt==(i))
){
res = i+1;
}
}
return res;
}
};