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

相关文章:

  • 从“调参侠“到“炼丹大师“!16种大模型微调秘籍全解锁,小白也能玩转LLM定制开发
  • 开源语音合成新选择:Chatterbox TTS API赋能开发者的文本转语音解决方案
  • 80亿参数改写AI应用规则:Qwen3-VL-8B-Thinking-bnb-4bit如何开启多模态普惠时代
  • HarmonyOS 6.0 ArkWeb开发实战:从基础到进阶的ArkUI+ArkTS实践
  • LLM代码评审Agent实战:基于Qwen3-Coder与RAG的企业级应用!
  • 从加密到解析仅需2分钟:Dify自动化PDF处理黑科技曝光
  • 【JAVA项目】基于JAVA的医院管理系统
  • AI大模型入门到实战系列(五)上下文嵌入向量(contextualized embedding)
  • Kubernetes Pod 垂直扩缩容实战指南:从重启到无重启
  • 从零开始:部署Tailchat私有聊天系统详细教程
  • 22万条推理数据开源!Open R1项目填补DeepSeek技术空白,全球AI社区加速复现浪潮
  • Wan2.2-T2V-A14B在AI音乐MV自动生成中的协同创作模式
  • Linux:简易进程池编写
  • UE5 材质-23:材质里参数的分组与排序。材质参数集,为了批量修改很多个材质实例里的参数的值。
  • Wan2.2-T2V-A14B如何应对‘先因后果’的时间逻辑关系?
  • Wan2.2-T2V-A14B模型更新日志解读:v2.2版本带来了什么?
  • Wan2.2-T2V-A14B生成未来城市概念视频的艺术表现力
  • 正则表达式
  • 利用cubemx和HAL库重写江科协的oled驱动程序
  • 十一.递归初阶
  • Wan2.2-T2V-A14B在航空航天科普视频中的应用前景
  • 突破数学推理瓶颈:DeepSeek-Prover-V1.5开创形式化反馈训练新范式
  • Wan2.2-T2V-A14B模型在视频广告A/B测试中的快速迭代优势
  • 代码智能新纪元:Qwen3-Coder国产大模型技术架构与开发实战全攻略
  • DevUI modal 弹窗表单联动实战:表格编辑功能完整实现
  • 模板生成能力终极对决:ERNIE-4.5与DeepSeek技术深度测评报告
  • 9 个专科生课堂汇报工具推荐,AI 写作降重神器
  • 深度解析HiPO:大语言模型动态推理的革命性突破——从AutoThink范式到混合策略优化的技术演进
  • 251212
  • B站视频下载新纪元:DownKyi如何重新定义你的内容收藏体验