1838. 最高频元素的频数

元素的 频数 是该元素在一个数组中出现的次数。

给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。

执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/frequency-of-the-most-frequent-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

滑动窗口(方法一)

import java.util.Arrays;

class Solution {
    public int maxFrequency(int[] nums, int k) {
        Arrays.sort(nums);
        int n = nums.length;
        long total = 0;
        int l = 0, res = 1;
        for (int r = 1; r < n; ++r) {
            total += (long) (nums[r] - nums[r - 1]) * (r - l);
            while (total > k) {
                total -= nums[r] - nums[l++];
            }
            res = Math.max(res, r - l + 1);
        }
        return res;
    }
}

滑动窗口(方法二)

import java.util.Arrays;

class Solution {
    public int maxFrequency(int[] nums, int k) {
        int n = nums.length;
        int left = 0, right = 0, window = 0;
        Arrays.sort(nums);
        while (right < n) {
            window += nums[right];
            if (nums[right] * (right - left + 1) - window > k) {
                window -= nums[left];
                left++;
            }
            right++;
        }
        return right - left;
    }
}
posted @ 2022-01-26 17:06  Tianyiya  阅读(41)  评论(0)    收藏  举报