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

【Leetcode 每日一题】2962. 统计最大元素出现至少 K 次的子数组

问题背景

给你一个整数数组 n u m s nums nums 和一个 正整数 k k k
请你统计有多少满足 「 n u m s nums nums 中的 最大 元素」至少出现 k k k 次的子数组,并返回满足这一条件的子数组的数目。
子数组是数组中的一个连续元素序列。

数据约束

  • 1 ≤ n u m s . l e n g t h ≤ 1 0 5 1 \le nums.length \le 10 ^ 5 1nums.length105
  • 1 ≤ n u m s [ i ] ≤ 1 0 6 1 \le nums[i] \le 10 ^ 6 1nums[i]106
  • 1 ≤ k ≤ 1 0 5 1 \le k \le 10 ^ 5 1k105

解题过程

子数组长度越大,最大元素出现次数越有可能满足条件,适用滑窗。
累计答案时有两种思路,在内层循环中,可以固定左端点,当前右端点直到数组末尾都是合法的答案,共有 ( n − r i g h t ) (n - right) (nright) 个;在内层循环结束时,可以固定右端点,数组开头直到当前左端点都是合法的答案,共有 l e f t left left 个。

具体实现

class Solution {public long countSubarrays(int[] nums, int k) {long res = 0;int target = 0;for (int num : nums) {target = Math.max(target, num);}int count = 0;for (int left = 0, right = 0; right < nums.length; right++) {if (nums[right] == target) {count++;}while (count >= k) {if (nums[left] == target) {count--;}                left++;// 在内层循环中统计答案,固定左端点得到的所有子数组都是符合条件的res += n - right;}// 在内层循环结束时统计答案,固定右端点得到的所有子数组都是符合条件的// res += left;}return res;}
}

相关文章:

  • 从Markdown到专业文档:如何用Python打造高效格式转换工具
  • 文件基础-----C语言经典题目(11)
  • 数据结构(十)---链式队列
  • 一文掌握 npm 基础与常用指令
  • Linux命令使用记录(自用)
  • 深度解析Qwen3:性能实测对标Gemini 2.5 Pro?开源大模型新标杆的部署挑战与机遇
  • 文心一言开发指南08——千帆大模型平台推理服务API
  • Manus AI多语言手写识别技术全解析:从模型架构到实战部署
  • MAC安装unar并解压.rar文件
  • 基于AutoDL V100微调DeepSeek Coder 6.7B (2)
  • 智体OS-V3.7重大发布:智体管家2.0、ai-docs知识库2.0、mcphost支持千款MCP-server、氛围电商或知识库电商模板、智体轻聊网页版
  • Java 多线程基础:Thread 类详解
  • 【Sqlalchemy Model转换成Pydantic Model示例】
  • 【含文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现
  • 嵌入式学习笔记 - 关于STM32 SPI控制器读取以及写入时,标志位TXE, RXNE的变化
  • Leetcode 3530. Maximum Profit from Valid Topological Order in DAG
  • C#实现对达索(Dassault)SolidWorks中3D图纸转化为手机可直接查看预览图纸格式
  • 扣子流程图批量导入飞书多维表格
  • springboot 框架把 resources下的zip压缩包, springboot 项目启动后解压到项目根目录工具类
  • 域对齐是什么
  • 浙商银行一季度净赚超59亿微增0.61%,非息净收入降逾22%
  • 神十九飞船已撤离空间站,计划于今日中午返回东风着陆场
  • 南京航空航天大学启动扁平化改革:管理岗规模控制在20%,不再统一设科级机构
  • 新华保险一季度净赚58.82亿增19%,保费收入增28%
  • 张元济和百日维新
  • 企业取消“大小周”引热议,半月谈:不能将显性加班变为隐性加班