每个元素最多出现 K 次的最长子数组
本文由旧博客内容整理迁入。原发布日期未提供,页面日期为本次整理日期。
题目
给你一个整数数组 nums 和一个整数 k。
一个元素 x 在数组中的频率,指的是它在数组中的出现次数。如果一个数组中所有元素的频率都小于等于 k,那么称这个数组为好数组。
请返回 nums 中最长好子数组的长度。子数组是数组中一段连续非空的元素序列。
示例
示例 1
1 | 输入:nums = [1,2,3,1,2,3,1,2], k = 2 |
解释:最长好子数组是 [1,2,3,1,2,3],值 1、2、3 的频率均未超过 2。[2,3,1,2,3,1] 和 [3,1,2,3,1,2] 也是长度为 6 的好子数组。
示例 2
1 | 输入:nums = [1,2,1,2,1,2,1,2], k = 1 |
解释:最长好子数组是 [1,2] 或 [2,1],其中每个元素只出现一次。
示例 3
1 | 输入:nums = [5,5,5,5,5,5,5], k = 4 |
解释:最长好子数组是 [5,5,5,5],值 5 的频率没有超过 4。
解题思路
直接见题解:统计窗口内元素的出现次数,只要新加入的元素出现次数超过 k,就移动左端点,直到窗口恢复合法。
C++ 题解
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Decwoveh的学习周记!
评论
