当前位置: 首页 > 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.cnnetsun.cn/news/11034.html

相关文章:

  • 11、MobX实战应用与特殊API解析
  • 从加密到解析仅需2分钟:Dify自动化PDF处理黑科技曝光
  • 申请TELEC认证需要准备哪些材料?
  • 大模型微调技术全解析:程序员必备收藏指南
  • ABB AF460-30-11 空气断路器
  • 利用cubemx和HAL库重写江科协的oled驱动程序
  • LAMMPS分子动力学模拟技术与应用
  • 深度学习中 z-score 标准化理解
  • 硬件测试面试题 - 模拟面试|AI面试官
  • QCoreApplication::aboutToQuit 可以链接多个槽函数吗
  • VLAN实验
  • Wan2.2-T2V-A14B模型对不同肤色人种的表现公平性评估
  • CTF竞赛系统、知识竞赛系统、漏洞靶场练习系统
  • 云主机Agent权限失控?AZ-500安全专家教你3招紧急封堵
  • HBase vs. 传统数据库:大数据时代的存储革命
  • Flutter 从原理到实战:深入理解跨平台框架核心与高效开发实践
  • Wan2.2-T2V-A14B实现物理级动态模拟的三大核心技术
  • 再谈ST表
  • 2026年机器人感知与智能控制国际学术会议(RPIC 2026)
  • Wan2.2-T2V-A14B生成视频可用于YouTube盈利吗?合规性解读
  • 【Docker Scout AI漏洞扫描揭秘】:如何利用人工智能精准发现容器安全盲点
  • Spring Kafka 动态消费实现案例
  • Wan2.2-T2V-A14B模型推理性能调优实战技巧分享
  • GraniStudio零代码平台调试算子方式有多少种?分别都是如何调试?
  • 小米14C刷国际版步骤
  • 智谱开源天团登陆 AtomGit,4 大模型覆盖多模态全场景!
  • 开源视频生成技术再突破:Wan2.1-FLF2V-14B模型实现720P高清流畅过渡
  • 教学辅助微信小程序设计毕业设计(源码+lw+部署文档+讲解等)
  • 【AUTOSAR AP Core】AUTOSAR AP核心:Executor角色揭秘
  • Chrony时间同步服务:从底层原理到技术演进的全景解析