C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组

题目链接:2958. 最多 K 个重复元素的最长子数组(中等)

算法原理:

👉对应力扣题解

解法:滑动窗口

击败10.52%

时间复杂度O(N)

👇跟下面的题思想一模一样,甚至比下面的题还简单,不需要问题转化,直接把需求告诉你了😂

优选算法-滑动窗口:11.最大连续1的个数Ⅲ

①进窗口:先放哈希表里,对应次数+1

②更新:如果次数<=k,就更新

③出窗口:次数>k时,持续出窗口

Java代码:

java 复制代码
class Solution {
    public int maxSubarrayLength(int[] nums, int k) {
        //子数组连续->滑动窗口
        Map<Integer,Integer> hash=new HashMap<>();
        int n=nums.length,ret=0;
        for(int right=0,left=0;right<n;right++){
            //进窗口
            int in=nums[right];
            hash.put(in,hash.getOrDefault(in,0)+1);
            //更新
            if(hash.get(in)<=k) ret=Math.max(ret,right-left+1);
            //出窗口
            while(hash.get(in)>k){
                int out=nums[left];
                hash.put(out,hash.get(out)-1);
                if(hash.get(out)==0) hash.remove(out);
                left++;
            }
        }
        return ret;
    }
}
相关推荐
烧烧的酒0.o1 分钟前
Java——JavaSE完整教程
java·开发语言·学习
池央6 分钟前
贪心算法-递增的三页子序列
算法·贪心算法
lrh1228006 分钟前
详解K近邻(KNN)算法:原理、实现与优化
算法·机器学习
鹏哥哥啊Aaaa7 分钟前
15.idea启动报错
java·ide·intellij-idea
super_lzb9 分钟前
VUE 请求代理地址localhost报错[HPM] Error occurred while trying to proxy request
java·spring·vue·springboot·vue报错
Dream_sky分享10 分钟前
IDEA 2025中TODO找不到
java·ide·intellij-idea
苏渡苇10 分钟前
用 Spring Boot 项目给工厂装“遥控器”:一行 API 控制现场设备!
java·人工智能·spring boot·后端·网络协议·边缘计算
伊甸311 分钟前
基于LangChain4j从0到1搭建自己的的AI智能体并部署上线-1
java·langchain·prompt
我待_JAVA_如初恋12 分钟前
重装系统后,idea被拦截,突然无法运行
java·ide·intellij-idea
东东51613 分钟前
校园短期闲置资源置换平台 ssm+vue
java·前端·javascript·vue.js·毕业设计·毕设