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;
    }
}
相关推荐
programhelp_4 分钟前
Roblox Coding OA 面经分享|题量不小,但整体更偏工程思维
人工智能·算法·面试
JAVA社区4 分钟前
Java进阶全套教程(一)—— 数据框架Mybatis详解
java·开发语言·面试·职场和发展·mybatis
周末也要写八哥4 分钟前
机器学习评价指标之平均概念
人工智能·算法·机器学习
JAVA学习通7 分钟前
《大营销平台系统设计实现》 - 营销服务 第10节:不超卖库存规则实现
java·数据库·oracle·责任链模式·codex
qq_2518364578 分钟前
基于java 安卓-RSS阅读系统毕业论文
android·java·开发语言
lili00128 分钟前
Gemini 3.5发布后的AI格局:谷歌重新定义行业标准
java·人工智能·python·ai编程
运筹vivo@9 分钟前
33. 搜索旋转排序数组(leetcode每日一题)
c++·算法
m0_6294947312 分钟前
LeetCode 热题 100-----27. 合并两个有序链表
数据结构·算法·leetcode·链表
JAVA社区12 分钟前
Java进阶全套教程(八)—— Docker超详细实战详解
java·运维·开发语言·docker·容器·面试·职场和发展
玖釉-12 分钟前
Slang 和 HLSL 的区别与用法详解:现代图形渲染中的两种 Shader 编程语言
c++·算法·图形渲染