LeetCode 2958.最多K个重复元素的最长子数组 - 教程
题目:
给你一个整数数组 nums
和一个整数 k
。
一个元素 x
在数组中的 频率指的是它在数组中的出现次数。
如果一个数组中所有元素的频率都小于等于 k
,那么我们称这个数组是 好 数组。
请你返回 nums
中 最长好子数组的长度。
子数组指的是一个数组中一段连续非空的元素序列。
思路:不定长滑动窗口 求最长
代码:
class Solution {
public int maxSubarrayLength(int[] nums, int k) {
int n = nums.length;
int left = 0;
int ans = 0;
Map map = new HashMap<>();
for (int right = 0; right k) {
int out = nums[left];
map.merge(out, -1, Integer::sum);
left++;
}
ans = Math.max(ans, right -left + 1);
}
return ans;
}
}
性能: