LeetCode 1838 最高频元素的频数
🟡 中等
https://leetcode.cn/problems/frequency-of-the-most-frequent-element/description/
不排序没法做,要把相近的元素放到一块。
问题就是图中的三角区域能否被 k 填满, 找到底下最宽的宽就行;当右边右移后,左边的界限只会右移,不会左移。

另外, long rec = static_cast<long>(nums[i]) * (i - left + 1); 类型转换转如果只转最后的结果是不对的,要转操作数,转一个就行。
class Solution {
public:
int maxFrequency(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
int left = 0;
long sum = 0;
long res = 0;
for (int i = 0; i < nums.size(); i++) {
sum += nums[i];
long rec = static_cast<long>(nums[i]) * (i - left + 1);
while (rec - sum > k) {
rec -= nums[i];
sum -= nums[left];
left++;
}
if(rec-sum<=k){
res = max(res,static_cast<long>(i-left+1) );
}
}
return res;
}
};