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

这道LeetCode Hard题,用一个转化思想就变简单了

求解思路

这道题将"恰好k种"这个条件转化为两个"最多k种"的问题相减。

我们可以这样理解:

如果我们知道有多少个子数组最多包含k种不同数字,再减去最多包含k-1种不同数字的子数组个数,剩下的就是恰好包含k种不同数字的子数组。

想象有一个可伸缩的窗口在数组上滑动,右指针不断向右扩展窗口,每次加入一个新数字就用计数器记录它出现的次数,如果这个数字是第一次出现就让种类数加1。

当窗口内的数字种类超过k时,我们就移动左指针收缩窗口,同时减少对应数字的计数,如果某个数字的计数变为0就让种类数减1,直到窗口内的种类数重新满足不超过k的条件。

在这个过程中,每当右指针固定在某个位置时,从左指针到右指针之间的所有子数组都是满足条件的,所以每次我们把当前窗口的长度也就是r-l+1累加到答案中。

这样遍历完整个数组后,就得到了所有最多包含k种不同数字的子数组总数。

代码实现上,我们使用一个计数数组cnts来记录每个数字在当前窗口中出现的次数,用collect变量维护当前窗口内不同数字的种类数。

通过这种方式,只需要遍历两遍数组分别计算"最多k种"和"最多k-1种",然后做个减法就能得到"恰好k种"的答案。

完整代码

publicstaticintsubarraysWithKDistinct(int[]arr,intk){
http://www.jsqmd.com/news/74264/

相关文章:

  • 从“调参侠“到“炼丹大师“!16种大模型微调秘籍全解锁,小白也能玩转LLM定制开发
  • 通义千问凭借“门控注意力”斩获 NeurIPS 最佳论文奖!详解Gated Attention原理
  • 开源语音合成新选择:Chatterbox TTS API赋能开发者的文本转语音解决方案
  • 80亿参数改写AI应用规则:Qwen3-VL-8B-Thinking-bnb-4bit如何开启多模态普惠时代
  • HarmonyOS 6.0 ArkWeb开发实战:从基础到进阶的ArkUI+ArkTS实践
  • Agent原理、主流框架、设计模式及应用案例
  • LLM代码评审Agent实战:基于Qwen3-Coder与RAG的企业级应用!
  • 零基础逆袭大模型!全网最细LLM学习路线图,从入门到精通一篇搞定,超详细!
  • 从加密到解析仅需2分钟:Dify自动化PDF处理黑科技曝光
  • 国内大模型产业突破:ERNIE 4.5 技术创新引领行业智能化升级新范式
  • 上海人工智能实验室安全团队实习生/全职招聘
  • 算力、模型、生态:亚马逊云科技云创计划,深度学习创业者的硬核“加速器”
  • RL并非万能药:CMU 新论文揭秘大模型推理能力的真正来源
  • 【限时关注】金融行业加密标准解读:PHP如何合规实现非对称加密
  • 【JAVA项目】基于JAVA的医院管理系统
  • Gemma 3 12B It GGUF:Google量化模型本地部署全解析与应用指南
  • Qwen3-30B-A3B-Instruct-2507深度剖析:256K超长上下文与MoE架构如何革新大模型效能
  • 大模型微调技术全解析:程序员必备收藏指南
  • 无线键盘办理TELEC认证办理需要多长时间?
  • AI大模型入门到实战系列(五)上下文嵌入向量(contextualized embedding)
  • 申请TELEC认证需要准备哪些材料?
  • Wan2.2-T2V-A14B在汽车发布会虚拟舞台设计中的全流程应用
  • Docker的AI模型版本管理方案(企业级实践案例曝光)
  • Kubernetes 误删除防护:“授权—验证”双环防护机制”生产级最佳实践指南
  • Kubernetes Pod 垂直扩缩容实战指南:从重启到无重启
  • 从零开始:部署Tailchat私有聊天系统详细教程
  • 22万条推理数据开源!Open R1项目填补DeepSeek技术空白,全球AI社区加速复现浪潮
  • Wan2.2-T2V-A14B在AI音乐MV自动生成中的协同创作模式
  • Wan2.2-T2V-A14B如何生成带有阴影变化的日光轨迹?
  • Linux:简易进程池编写