• 這題同樣是經典的 sliding window,經排序過後,我們可以透過 len * max_element_in_window - accumulate_in_window 的方式來求 token need,
  • 接著套不定長 sliding window。
class Solution {
public:
    int maxFrequency(vector<int>& nums, int k) {
        sort(nums.begin(), nums.end());
        int left = 0, right = 0, res = 0, n = nums.size();
        long long curr = 0;
        while (right < n) {
            int num = nums[right++];
            curr += num;
            while ((long long)(right-left) * num - curr > k) {
                curr -= nums[left++];
            }
            res = max(res, right-left);
        }
        return res;
    }
};