C.滑动窗口-求子数组个数-越长越合法——2962. 统计最大元素出现至少 K 次的子数组

题目链接:2962. 统计最大元素出现至少 K 次的子数组(中等)

算法原理:

解法:滑动窗口

先找到最大值,其余做法与模板题基本一模一样👇

C.滑动窗口-求子数组个数-越长越合法------1358. 包含所有三种字符的子字符串数目(模板)

答疑

Q1:难道就不能用小贪心的方法,只用一次遍历既找到最大值又能统计窗口内最大值出现次数又能统计结果数吗?

不能,一次遍历无法完成,核心原因是:你必须先明确全局最大值才能统计包含它的子数组,而「全局最大值」需要遍历完整个数组才能确定

Java代码:

java 复制代码
class Solution {
    public long countSubarrays(int[] nums, int k) {
        int n=nums.length;
        int left=0,count=0;
        long ret=0,max=0;
        //先找到最大值
        for(int x:nums) max=Math.max(max,x);
        for(int x:nums){
            //进窗口
            if(x==max) count++;
            //出窗口
            while(count>=k){
                if(nums[left]==max) count--;
                left++;
            }
            //更新
            ret+=left;
        }
        return ret;
    }
}
相关推荐
swordbob4 分钟前
缓存延迟双删的两种策略
java·缓存
凡人叶枫5 分钟前
Effective C++ 条款08:别让异常逃离析构函数
java·linux·数据库·c++·嵌入式开发
云烟成雨TD5 分钟前
Agent Scope Java 2.x 系列【4】模型层
java·人工智能·agent
云淡风轻~窗明几净10 分钟前
角谷猜想的任意算法测试
数据结构·人工智能·算法
代码中介商12 分钟前
关键路径解析:项目管理的工期奥秘
数据结构
云烟成雨TD17 分钟前
Agent Scope Java 2.x 系列【5】智能体抽象层
java·人工智能·agent
happygrilclh20 分钟前
赚外快了:等离子表面处理机电源算法需求说明
算法
阿伟AI说21 分钟前
Codex 桌面版接入国产模型系列二:Codex++
java·开源软件·ai编程·腾讯云ai代码助手
ji1985944335 分钟前
MATLAB 求散点曲线斜率
开发语言·算法·matlab
kaikaile199539 分钟前
MATLAB 实现:Koch & Zhao 图像水印算法(DCT域)
开发语言·算法·matlab