当前位置: 首页 > news >正文

LeetCode 2962.统计最大元素出现至少 K 次的子数组:滑动窗口

【LetMeFly】2962.统计最大元素出现至少 K 次的子数组:滑动窗口

力扣题目链接:https://leetcode.cn/problems/count-subarrays-where-max-element-appears-at-least-k-times/

给你一个整数数组 nums 和一个 正整数 k

请你统计有多少满足 「 nums 中的 最大 元素」至少出现 k 次的子数组,并返回满足这一条件的子数组的数目。

子数组是数组中的一个连续元素序列。

 

示例 1:

输入:nums = [1,3,2,3,3], k = 2
输出:6
解释:包含元素 3 至少 2 次的子数组为:[1,3,2,3]、[1,3,2,3,3]、[3,2,3]、[3,2,3,3]、[2,3,3] 和 [3,3] 。

示例 2:

输入:nums = [1,4,2,1], k = 3
输出:0
解释:没有子数组包含元素 4 至少 3 次。

 

提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 106
  • 1 <= k <= 105

解题方法:滑动窗口

首先遍历一遍数组得到数组中最大的元素。

之后使用两个指针分别指向窗口中的第一个和最后一个元素的下标,不断右移右指针,并将新元素加入窗口。

当窗口中“最大数个数”等于k时,不断右移左窗口并将左边元素移出窗口。此时左指针左边(不含左指针)的任何一个元素开始到右指针所组成的子数组都合法。

  • 时间复杂度 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-04-29 13:19:27* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-29 21:19:24*/
typedef long long ll;class Solution {
public:long long countSubarrays(vector<int>& nums, int k) {int mx = nums[0];for (int t : nums) {mx = max(mx, t);}ll ans = 0;for (int l = 0, r = 0, cnt = 0; r < nums.size(); r++) {cnt += nums[r] == mx;while (cnt == k) {cnt -= nums[l++] == mx;}ans += l;}return ans;}
};
Python
'''
Author: LetMeFly
Date: 2025-04-29 13:19:47
LastEditors: LetMeFly.xyz
LastEditTime: 2025-04-29 21:21:03
'''
from typing import Listclass Solution:def countSubarrays(self, nums: List[int], k: int) -> int:mx = max(nums)l = cnt = ans = 0for t in nums:cnt += t == mxwhile cnt == k:cnt -= nums[l] == mxl += 1ans += lreturn ans
Java
/** @Author: LetMeFly* @Date: 2025-04-29 13:19:49* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-29 21:23:01*/
class Solution {public long countSubarrays(int[] nums, int k) {int mx = nums[0];for (int t : nums) {mx = Math.max(mx, t);}long ans = 0;for (int l = 0, cnt = 0, r = 0; r < nums.length; r++) {if (nums[r] == mx) {cnt++;}while (cnt == k) {if (nums[l++] == mx) {cnt--;}}ans += l;}return ans;}
}
Go
/** @Author: LetMeFly* @Date: 2025-04-29 13:20:02* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-29 13:23:23*/
package mainfunc countSubarrays(nums []int, k int) (ans int64) {M := nums[0]for _, t := range nums {M = max(M, t)}for l, r, cnt := 0, 0, 0; r < len(nums); r++ {if nums[r] == M {cnt++}for cnt >= k {if nums[l] == M {cnt -= 1}l++}ans += int64(l)}return
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关文章:

LeetCode 2962.统计最大元素出现至少 K 次的子数组:滑动窗口

【LetMeFly】2962.统计最大元素出现至少 K 次的子数组&#xff1a;滑动窗口 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-subarrays-where-max-element-appears-at-least-k-times/ 给你一个整数数组 nums 和一个 正整数 k 。 请你统计有多少满足 「 nums 中…...

Nginx反向代理的负载均衡配置

Nginx 负载均衡详解 在互联网应用中&#xff0c;随着网站访问量的不断攀升&#xff0c;服务器的服务模式也需要进行相应升级。诸如分离数据库服务器、将图片作为单独服务等操作&#xff0c;这些都属于简单的数据负载均衡&#xff0c;其目的是将压力分散到不同机器上。而来自 We…...

案例速成GO+Socket,个人笔记

更多个人笔记&#xff1a;&#xff08;仅供参考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note 文章目录 简单知识了解实现一个TCP 服务器与客户端&#xff08;聊天室&#x…...

篮球足球体育球员综合资讯网站模板

采用帝国CMS7.5新版核心。栏目和内容模板超多变换。后台操作简单&#xff0c;安全可靠&#xff0c;性能稳定。整站浏览效果高端大气&#xff0c;可以帮助你快速建立一个适合自己的软件下载类型的站点&#xff01; 演示地址&#xff1a;https://www.tmuban.com/store/620.html …...

HTTP(超文本传输协议)全面总结

HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是万维网&#xff08;World Wide Web&#xff09;应用中的基础协议&#xff0c;用于客户端与服务器之间的数据传输。随着互联网技术的发展&#xff0c;HTTP协议也经历了多个版本的更新&…...

OpenCV 图形API(72)图像与通道拼接函数-----根据指定的方式翻转图像(GMat)函数 flip()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 翻转一个2D矩阵&#xff0c;围绕垂直轴、水平轴或同时围绕两个轴。 该函数以三种不同的方式之一翻转矩阵&#xff08;行和列的索引是从0开始的&a…...

【报错问题】 macOS 的安全策略(Gatekeeper)阻止了未签名的原生模块(bcrypt_lib.node)加载

这个错误是由于 macOS 的安全策略&#xff08;Gatekeeper&#xff09;阻止了未签名的原生模块&#xff08;bcrypt_lib.node&#xff09;加载 导致的。以下是具体解决方案&#xff1a; 1. 临时允许加载未签名模块&#xff08;推荐先尝试&#xff09; 在终端运行以下命令&#x…...

keep-alive具体使用方法

什么是 Keep-Alive <keep-alive> 是 Vue.js 提供的一个内置组件&#xff0c;用于缓存动态组件实例&#xff0c;从而避免重复渲染已加载过的组件。它的主要功能是在切换组件时保留状态和 DOM 结构&#xff0c;提升性能。 工作原理 <keep-alive> 的核心在于维护一个…...

【C++11】包装器:function与bind

前言&#xff1a; 上文我们学了C11中一个新的表达式&#xff1a;Lambda表达式。Lambda表达式可以在函数内部定义&#xff0c;其本质是仿函数【C11】Lambda表达式-CSDN博客 本文我们来学习C11的下一个新语法&#xff1a;包装器 function function的定义为&#xff1a; templat…...

Educational Codeforces Round 178 div2(题解ABCDE)

A. Three Decks #1.由于最后三个数会相等&#xff0c;提前算出来和&#xff0c;%3判断&#xff0c;再判前两个数是否大于 #include<iostream> #include<vector> #include<stdio.h> #include<map> #include<string> #include<algorithm> #…...

mermaid 序列图 解析

sequenceDiagramparticipant UI as 用户界面participant Executor as 任务执行器participant StateMgr as 状态管理器participant Repo as 数据仓库UI->>Executor: 执行任务3350c74e...Executor->>StateMgr: 更新状态为"measuring"StateMgr->>Repo…...

DTO,VO,PO,Entity

1. DTO (Data Transfer Object) 定义 DTO 是数据传输对象&#xff0c;用于在不同系统或层之间传输数据。 目的 简化数据传输&#xff0c;降低耦合&#xff0c;通常只包含需要传输的字段&#xff0c;避免暴露内部实现细节。 使用场景 Controller 和 Service 或 远程调用 之…...

Proser:重新介绍

回想Proser的定位&#xff1a;一款直观的【协议发送】模拟软件。 现在间断更新下来&#xff0c;基本成了一款通信调试助手类软件 Proser 是一款支持串口与网络的通信调试助手&#xff0c;其独有的协议编辑器、数据检视、标尺等功能&#xff0c;让指令模拟与数据分析更加易用。…...

微信小程序 首页之轮播图和搜索框 代码分享

注意&#xff01;&#xff01;&#xff01; 只有样式&#xff0c;还没功能开发&#xff01;&#xff01;&#xff01; index.wxml <!-- 搜索框 --> <view class"search"><input placeholder"请输入搜索的内容"></input><imag…...

3D可视化编辑器模版

体验地址&#xff1a;http://mute.turntip.cn 整个搭建平台核心模块包含如下几个部分&#xff1a; 3D场景渲染 组件拖拽系统 元素编辑功能 状态管理 历史记录与撤销/重做 技术栈 前端框架与库 React 18 用于构建用户界面的JavaScript库 Next.js 14 React框架&#xff0c;提供服…...

foc控制 - clarke变换和park变换

1. foc控制框图 下图是foc控制框图&#xff0c;本文主要是讲解foc控制中的larke变换和park变换clarke变换将 静止的 a b c abc abc坐标系 变换到 静止的 α β αβ αβ坐标系&#xff0c;本质上还是以 定子 为基准的坐标系park变换 则将 α β αβ αβ坐标系 变换到 随 转…...

DeepSeek: 探索未来的深度学习搜索引擎

深度学习驱动的下一代搜索引擎&#xff1a;DeepSeek 在信息爆炸的时代&#xff0c;搜索引擎作为连接用户与互联网世界的桥梁&#xff0c;其重要性不言而喻。然而&#xff0c;随着用户需求的日益多样化和复杂化&#xff0c;传统搜索引擎在理解和满足用户需求方面逐渐显现出局限…...

如何在本地部署小智服务器:从源码到全模块运行的详细步骤

小智聊天机器人本地后台服务器源码全模块部署 作者&#xff1a;林甲酸 -不是小女子也不是女汉子 是大女子 更新日期&#xff1a;2025年4月29日 &#x1f3af; 前言&#xff1a;为什么要写这篇教程&#xff1f; 上周按照虾哥小智服务器的教程去部署本地后台&#xff0c;我用的是…...

基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(四)

上一篇介绍了基于SmartETL框架实现arxiv采集处理的基本流程&#xff0c;通过少量的组件定制开发&#xff0c;配合yaml流程配置&#xff0c;实现了复杂的arxiv采集处理。 由于其业务流程复杂&#xff0c;在实际应用中还存在一些不足需要优化。 5. 基于Kafka的任务解耦设计 5.…...

GrapesJS 终极定制组件设计方案:扁平化对象属性编辑、多区域拖拽、多层嵌套与组件扩展实战

掌握 GrapesJS 复杂组件实用技巧&#xff0c;打造高复用、高交互的前端低代码组件体系 随着低代码可视化编辑需求日益提升&#xff0c;GrapesJS 作为优秀开源画布编辑器&#xff0c;灵活的组件机制是其核心优势。但在实际项目中&#xff0c;你可能会遇到&#xff1a; 如何编辑…...

Spring MVC 如何映射 HTTP 请求到 Controller 方法?

我们来详细分析一下如何在 Spring MVC 中将 HTTP 请求映射到 Controller 的处理方法&#xff08;Handler Methods&#xff09;上&#xff0c;以及 RequestMapping 注解的使用方法。 请求映射的核心&#xff1a;RequestMapping 注解 RequestMapping 是 Spring MVC 中最核心、最…...

vue.js中的一些事件修饰符【前端】

不要一直责怪过去的自己&#xff0c;他独自站在雾里也很迷茫。 目录 .stop&#xff1a;.prevent&#xff1a;.self&#xff1a;.once&#xff1a;.capture&#xff1a;.native&#xff1a;何时使用 .native&#xff1f; .stop&#xff1a; 作用&#xff1a;调用 event.stopPro…...

WEBSTORM前端 —— 第2章:CSS —— 第4节:盒子模型

目录 1.画盒子 2.Pxcook软件 3.盒子模型——组成 4.盒子模型 ——边框线 5.盒子模型——内外边距 6.盒子模型——尺寸计算 7.清除默认样式 8.盒子模型——元素溢出 9.外边距问题 ①合并现象 ②塌陷问题 10.行内元素——内外边距问题 11.盒子模型——圆角 12.盒子…...

Cursor —— AI编辑器 使用详解

Cursor - The AI Code Editor 一、Cursor 是什么&#xff1f; Cursor 是一款优秀的AI代码编辑器&#xff0c;它内置了 Deepseek-R1、GPT-4、Claude等 AI 模型。 简单说&#xff0c;就是&#xff1a;Cursor VS Code 编辑器 AI 大模型 Cursor 功能特性&#xff08;代码补全、…...

故障诊断——复现github代码ClassBD-CNN(BDCNN)

刚好看到这篇文献有github代码&#xff0c;而且也比较新&#xff0c;感觉可以当作自己论文中的对比方法。 https://www.sciencedirect.com/science/article/pii/S0888327024006484 &#xff08;论文地址&#xff09; &#xff08;看到4090&#xff0c;有点想劝退自己......&…...

局部和整体的关系

Prompt&#xff1a;为什么要研究局部和整体的关系呢&#xff1f;是因为很多情况下&#xff0c;局部就能表达出整体&#xff1f; 这是一个非常本质的问题&#xff0c;其实你已经接近数学和物理中“几何本质”的核心了。我们研究局部和整体的关系&#xff0c;是因为&#xff1a;…...

1.5 点云数据获取方式——双目立体相机

图1-5-1 双目立体相机 双目相机通过模拟人眼立体视觉,利用两个摄像头的视差信息计算物体深度,进而生成 3D 点云,具有成本低、体积小、信息丰富等优势,成为中...

Flume启动报错

报错1&#xff1a; 报错2&#xff1a; File Channel transaction capacity cannot be greater than the capacity of the channel capacit... 解决方案&#xff1a;删除配置...

leetcode 21. 合并两个有序链表(c++解法+相关知识点复习)

目录 题目 所需知识点复习 1.链表 1.1单链表 1.2哑结点&#xff08;Dummy Node&#xff09; 解答过程 1.循环双指针解法 2.递归解法 2025.4.29想到其他知识点会后续再继续补充。 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表…...

链表反转_leedcodeP206

P206反转链表 原题 反转思路 将链表反转的过程分为两个区域&#xff1a; &#x1f7e6; 未反转区&#xff08;待处理&#xff09; 原链表中还没有处理&#xff08;还没有反转指针方向&#xff09;的部分&#xff0c;从 current 开始一直到链表尾部。 &#x1f7e9; 已反转…...

Laravel+API 接口

LaravelAPI 接口 网课连接&#xff1a;BIlibili. 中文文档. 1.RestFul Api编码风格 一、API设计 修改hosts&#xff0c;C:\Windows\System32\drivers\etc\hosts&#xff0c;增加127.0.0.1 api.lv8.com # Laravel 框架 用这个域名来测试&#xff08;推荐规范&#xff09; 在…...

在 Ubuntu 上离线安装 ClickHouse

在 Ubuntu 上离线安装 ClickHouse 的步骤如下: 一.安装验证 # 检查服务状态 sudo systemctl status clickhouse-server #删除默认文件 sudo rm /etc/clickhouse-server/users.d/default-password.xml # 使用客户端连接 clickhouse-client --password...

【AI微信小程序开发】掷骰子小程序项目代码:自设骰子数量和动画(含完整前端代码)

系列文章目录 【AI微信小程序开发】AI减脂菜谱小程序项目代码:根据用户身高/体重等信息定制菜谱(含完整前端+后端代码)【AI微信小程序开发】AI菜谱推荐小程序项目代码:根据剩余食材智能生成菜谱(含完整前端+后端代码)【AI微信小程序开发】图片工具小程序项目代码:图片压…...

Linux-02-VIM和VI编辑器

第一节:什么是VI和VIM编辑器: VI是Unix和类Unix操作系统中出现的通用的文本编辑器。VIM是从VI发展出来的一个性能更强大的文本编辑器可以主动的以字体颜色辨别语法的正确性,方便程序设计,VIM和VI编辑器完全兼容。使用:vi xxx文件 或者vim xxx文件,简单来说就是用来编辑文件的一…...

同为科技 智能PDU产品选型介绍-EN10/G801FR

随着各行业对数据中心机房重视程度的不断提高&#xff0c; 加强机柜微环境及电源计量、监控和管理则十分必要。在新型微模块化数据中心供配电系统建设中&#xff0c;UPS电源、智能PDU、监控管理系统、资产管理等产品早已成为IDC机房不可或缺的部分。其中&#xff0c;智能PDU通过…...

NS-SWIFT微调Qwen3

目录 一、NS-SWIFT简介 二、Qwen3简介 三、微调Qwen3 1、安装NS-SWIFT环境 2、准备训练数据 3、Lora微调 4、GROP训练 5、Megatron并行训练 一、NS-SWIFT简介 SWIFT&#xff08;Scalable lightWeight Infrastructure for Fine-Tuning&#xff09;是魔搭ModelScope开源社…...

借 AI 热潮,深挖 [风车 AI ] 为跨境电商打造的图片翻译黑科技

家人们&#xff0c;这几年 AI 技术简直像坐了火箭一样飞速发展&#xff0c;生活里、工作中到处都能看到它的身影。对咱们跨境行业来说&#xff0c;语言翻译一直是个让人头疼的大问题。今天咱就借着这股 AI 热潮&#xff0c;好好深挖一下风车 AI 为跨境打造的那些超厉害的翻译黑…...

uni-app 中封装全局音频播放器

在开发移动应用时&#xff0c;音频播放功能是一个常见的需求。无论是背景音乐、音效还是语音消息&#xff0c;音频播放都需要一个稳定且易于管理的解决方案。在 uni-app 中&#xff0c;虽然原生提供了 uni.createInnerAudioContext 方法用于音频播放&#xff0c;但直接使用它可…...

Uniapp:设置TabBar

目录 一、setTabBarBadge:增加文本二、removeTabBarBadge:移除文本三、showTabBarRedDot:显示红点四、hideTabBarRedDot:隐藏红点一、setTabBarBadge:增加文本 为 tabBar 某一项的右上角添加文本。 uni.setTabBarBadge({index: 0,text: 1 })参数类型必填说明indexNumber…...

如何查看k8s获取系统是否清理过docker镜像

k8s集群某个节点down掉后&#xff0c;pod就会漂移到其他节点&#xff0c;但是在该节点却又执行了拉取镜像操作&#xff0c;明明该节点之前部署过该容器的&#xff0c;不知为什么又拉取了一次镜像&#xff08;镜像拉取配置的优先使用本地&#xff09;&#xff0c;所以怀疑是触发…...

【Linux网络】深入解析I/O多路转接 - Select

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

如何解决 Xcode 签名证书和 Provisioning Profile 过期问题

在 iOS 应用开发过程中&#xff0c;签名证书和 Provisioning Profile 是确保应用安全性和合法性的关键组件。然而&#xff0c;当这些证书或配置文件过期时&#xff0c;开发者可能会遇到编译或归档失败的问题。本文将详细介绍如何解决 Xcode 中“iOS Distribution”证书未找到和…...

[C++]C++20协程的原理

文章目录 协程的状态机Promise 对象挂起和恢复机制协程的执行流程示例代码分析 C 协程是 C20 引入的一项重要特性&#xff0c;它提供了一种更简洁、高效的异步编程方式。下面从协程的状态机、Promise 对象、挂起和恢复机制等方面介绍其底层实现原理。 协程的状态机 从底层角度…...

Oracle OCP证书有效期是三年?

这一段时间&#xff0c;网上经常传出消息Oracle OCM认证证书有效期为三年&#xff0c;其实这个假消息&#xff0c;通过博睿谷与Oracle官方人员确认&#xff0c;OCP认证证书有效期是永久的。 OCP证书本身永久有效&#xff0c;但老版本的OCP证书代表着更多的项目经验&#xff0c…...

2025.4.29_STM32_看门狗WDG

1.WDG简介 大概意思就是给看门狗设置一个时间范围&#xff0c;在这个范围内必须喂狗(重置定时器)&#xff0c;这个操作必须一直执行&#xff0c;比如看门狗的的时间范围是1-2秒&#xff0c;我们就必须间隔1-2秒就喂一次狗&#xff0c;否则它自减到0时就会重置电路&#xff0c;相…...

基于Java,SpringBoot,HTML水文水质监测预警系统设计

摘要 随着水资源管理需求的日益增长&#xff0c;构建高效、精准的水文监测预警系统至关重要。本文设计并实现了一套基于 Java、SpringBoot 和 HTML 技术的水文监测预警系统。系统采用 Java 语言与 SpringBoot 框架搭建后端服务&#xff0c;利用其强大的业务逻辑处理能力与高效…...

Qt开发:JSON字符串的序列化和反序列化

文章目录 一、构建和解析单个JSON对象二、JSON对象中嵌套多个JSON对象三、JSON对象中组建多个数组对象四、构建和解析数组对象 一、构建和解析单个JSON对象 1.1 JSON对象的构建 使用key-value形式生成JSON对象 #include <QJsonObject> #include <QJsonDocument> …...

第10次:电商项目配置开发环境

本次内容主要为给整个电商项目配置好开发环境&#xff0c;包括如下环节&#xff1a; 创建电商项目xiaoyu_mall&#xff0c;Django版本默认是最新的大版本5.2配置应用目录&#xff0c;因项目会涉及到多个应用&#xff0c;为保证项目结构清晰&#xff0c;将在项目下建立apps目录…...

【强化学习系列】Q-learning——从贝尔曼最优方程谈起

引言 上一篇贝尔曼最优方程中我们已经推导出动作价值形式的贝尔曼最优方程&#xff1a; q π ∗ ( s , a ) ∑ s ′ ∈ S ∑ r ∈ R p ( s ′ , r ∣ s , a ) [ r γ max ⁡ a ′ q π ∗ ( s ′ , a ′ ) ] \begin{equation}q_{\pi^*}(s,a)\sum_{s\in S}\sum_{r\in R}p(s,…...

Java 基础--运算符全解析

【Java 基础】Java 运算符全解析&#xff1a;程序世界的“加减乘除”与“是非对错” 作者&#xff1a;IvanCodes 发布时间&#xff1a;2025年4月29日&#x1f423; 专栏&#xff1a;Java教程 嗨&#xff0c;各位 Java 探险家们&#xff01;&#x1f44b; 掌握了变量、数据类…...