LeetCode 1838题
原题链接: https://leetcode.com/problems/frequency-of-the-most-frequent-element/
关键点:
1、最后的最频繁出现的元素一定在数组中,如果不在数组中,也可以通过整体少increase几次的方式,回到数组元素中。
2、最后的结果元素在最后加工前元素中,是最大的。
3、以上两点可以得到,将数组排序后,元素一定在数组的一个窗口内,不可能窗口内有元素被跳过。
综上所述,代码如下
class Solution {
public:
int maxFrequency(vector<int>& nums, int k) {
sort(nums.begin(),nums.end());
int left = 0;
int ans = 0;
long sum = 0;
for(int right = 0;right<nums.size();right++){
sum += nums[right];
if(long(right-left+1)*nums[right] - sum > k){
sum-=nums[left];
left++;
}
ans = (right-left+1>ans)?right-left+1:ans;
}
return ans;
}
};