讨论/题目交流/🏆 第 158 场力扣周赛/
🏆 第 158 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

分割平衡字符串
可以攻击国王的皇后
掷骰子模拟
最大相等频率

展开讨论

最后一题,考虑三种情况:
1、前缀数组中所有数字的频率只有两种,设为A和B,其中A=B+1,且只有一个数字频率为A;
2、前缀数组中所有数字的频率只有两种,其中只有一个数字的频率为1,其他数字的频率都大于1且相等;
3、整个数组的数字的频率都是1。

对应的处理:
1、把前缀数组中频率为A的数字删去1个即可;
2、把前缀数组中频率为1的数字删去即可;
3、整个数组删去任意一个数字都可。

class Solution {
public:
    int maxEqualFreq(vector<int>& nums) {
        vector<int> cnt(100001,0),fre(100001,0);
        int maxcnt=0,ans=0;
        for(int i=0;i<nums.size();++i){
            int num=nums[i];
            ++cnt[num];
            ++fre[cnt[num]];
            maxcnt=max(maxcnt,cnt[num]);
            if((fre[maxcnt]==1&&fre[maxcnt]+fre[maxcnt-1]*(maxcnt-1)==i+1)||(fre[maxcnt]*maxcnt+1==i+1))
                ans=i+1;
        }
        if(maxcnt==1)
            return nums.size();
        return ans;
    }
};
1
展开全部 14 讨论