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;
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号