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;
    }
}
相关推荐
bro_Java666几秒前
链表进阶:链表笔试真题
数据结构·链表
学编程就要猛1 分钟前
使用Spring AI配置聊天大模型实现人机交互(初阶)
java·spring ai·advisor·chatclient·chatmodel
ly-272534 分钟前
IEEE PDF eXpress终稿检测踩坑记录:PDF图片字体未嵌入与LaTeX参考文献编译异常解决方法
服务器·人工智能·算法
代码不停12 分钟前
子序列问题
java·算法
计算机学姐18 分钟前
基于SpringBoot的高校爱心慈善管理系统
java·vue.js·spring boot·后端·spring·tomcat·mybatis
黎阳之光27 分钟前
AI黑光相机|赋能低空全域感知,筑牢低空经济全天候视觉防线
人工智能·物联网·算法·安全·数字孪生
大梦想家a32 分钟前
基于Servlet+JSP的小区物业管理系统设计与实现(Bootstrap+MySQL)
java·servlet·bootstrap
手写码匠35 分钟前
华为云Flexus+DeepSeek征文|DeepSeek R1 推理优化实战:让复杂任务的回答又快又稳
人工智能·深度学习·算法·aigc
Cabbage_acmer36 分钟前
cf训练-gpt
算法
wenyq740 分钟前
LeetCode 438. Find All Anagrams in a String
算法·leetcode