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

【Leetcode 每日一题 - 补卡】2537. 统计好子数组的数目

问题背景

给你一个整数数组 n u m s nums nums 和一个整数 k k k,请你返回 n u m s nums nums 子数组的数目。
一个子数组 a r r arr arr 如果有 至少 k k k 对下标 ( i , j ) (i, j) (i,j) 满足 i < j i < j i<j a r r [ i ] = a r r [ j ] arr[i] = arr[j] arr[i]=arr[j],那么称它是一个 子数组。
子数组 是原数组中一段连续 非空 的元素序列。

数据约束

  • 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 ] , k ≤ 1 0 9 1 \le nums[i], k \le 10 ^ 9 1nums[i],k109

解题过程

要求不同的相等数对数量达到某个下限,显然子数组中元素数量越多越有可能满足条件,标准的滑窗。

具体实现

class Solution {public long countGood(int[] nums, int k) {long res = 0;Map<Integer, Integer> map = new HashMap<>();int count = 0;for (int left = 0, right = 0; right < nums.length; right++) {count += map.merge(nums[right], 1, Integer::sum) - 1;while (count >= k) {count -= map.merge(nums[left], -1, Integer::sum);left++;}res += left;}return res;}
}
http://www.xdnf.cn/news/82.html

相关文章:

  • Flink-01学习 介绍Flink及上手小项目之词频统计
  • GPT对话UI--通义千问API
  • Linux 权限
  • 2025.4.17学习日记 初识JavaScript 以及Java和JavaScript有什么区别
  • 什么是分布式锁?
  • Linux: 生产者消费者模型
  • 从零开始学A2A四:A2A 协议的安全性与多模态支持
  • 多个路由器互通(静态路由)无单臂路由(简单版)
  • STM32 时钟树
  • TCP连接建立:为什么是三次握手?
  • 正则表达式在爬虫中的应用:匹配 HTML 和 JSON 的技巧
  • 操作教程|通过DataEase制作MaxKB系统数据大屏
  • QML之Overlay
  • R4打卡——pytorch实现LSTM预测火灾
  • 《vue3学习手记4》
  • openai发布今天发布了o3和o4-mini。
  • Vue 3 reactive 和 ref 区别及 失去响应性问题
  • 大数据常见的模型定义及应用场景建议╮(╯▽╰)╭
  • 深入理解常见排序算法:从原理到实践
  • 视频剪辑入门
  • 深入了解v-model的原理:v-model拆分为value属性和input事件,表单类组件的封装并用v-model简化代码
  • 是德科技E5080B网络分析仪深度评测:5G/车载雷达测试实战指南
  • 零基础上手Python数据分析 (16):DataFrame 常用统计分析方法
  • 【2025“华中杯”大学生数学建模挑战赛】C题:就业状态分析与预测 详细解题思路
  • ffmpeg 添加 nvenc支持
  • Layout 路由
  • 202520读书笔记|《我要按自己喜欢的方式去生活》——面对可能到来的裁员,那就等正式通知吧
  • SAP系统青果糖无法报工
  • 前沿要塞:Vue组件安全工程的防御体系重构与技术突围
  • 介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。