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;
    }
}
相关推荐
.道阻且长.2 分钟前
5.LeetCode算法习题讲解--双指针--有效三角形的个数
算法·leetcode·职场和发展
我是海飞20 分钟前
杰理JL703N SSD1306 OLED(128x64) 点阵屏移植说明
单片机·算法·嵌入式·音频·杰理
OH_TPC35 分钟前
HarmonyOS APP开发---“滤镜大师“图像处理App,需要用到这个库
java·图像处理·华为·harmonyos·鸿蒙
wabs6661 小时前
关于图论【最短路径之Bellman_ford 算法(单源有限最短路)|卡码网96.城市间货物运输III的思考】
数据结构·算法·图论·卡码网·bellman_ford·单源有限最短路
imaol12 小时前
链表 -- 环链表
java·前端·链表
wuyk5552 小时前
2.队列:先进先出的线性数据结构
c语言·数据结构·stm32·单片机
imaol12 小时前
链表 -- 双向链表
java·前端·链表
2601_963869953 小时前
【计算机毕业设计】基于Java的相框定制系统的设计与实现
java·开发语言·课程设计
lsylalalala3 小时前
常见的排序算法1
数据结构·算法·排序算法
于烛4 小时前
为什么hasNext() 对只有一个元素的集合返回 true?90%初学者都有的疑问
java