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;
    }
}
相关推荐
鶴哥只手遮天2 分钟前
Spring AI 2.0.1 深度解析-第 07 章 RAG 模块化架构:RetrievalAugmentationAdvisor流水线与 Query体系
java·人工智能·开源
鶴哥只手遮天2 分钟前
Spring AI 2.0.1 深度解析-第 09 章 工具调用(上):`@Tool` 注解、ToolDefinition 与 JSON Schema 生成
java·人工智能·开源
鶴哥只手遮天3 分钟前
Spring AI 2.0.1 深度解析-第 02 章 核心抽象层:`Model` / `StreamingModel` 与 ChatModel 体系
java·人工智能·开源
鶴哥只手遮天4 分钟前
Spring AI 2.0.1 深度解析-第 01 章 全景:模块拓扑、依赖层次与设计哲学
java·人工智能·开源
鶴哥只手遮天8 分钟前
Spring AI 2.0.1 深度解析-第 05 章 Advisor 架构:接口体系、栈式链与 context 传播
java·人工智能·开源
鶴哥只手遮天10 分钟前
Spring AI 2.0.1 深度解析-第 04 章 `ChatClient` 全流程:Builder、两条链路与结构化输出
java·人工智能·开源
鶴哥只手遮天10 分钟前
Spring AI 2.0.1 深度解析-第 08 章 RAG 组件逐个拆解:实现细节与八个可投产组件
java·人工智能·开源
SL_staff1 小时前
告别报表重复开发:JVS-BI 模板市场的参数化继承实践
java·数据分析·数据可视化
SL_staff2 小时前
从邮箱传文档到协同流重构:企业文档协作的系统性破局实践
java·开源·github
zyl7654 小时前
FlashAttention 详解:从 GPU 硬件、普通 Attention 到分块计算与 Online Softmax
算法