news 2026/4/3 5:44:55

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
这道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){
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/10 20:55:28

Linux:简易进程池编写

设计概念Channel初始化创建任务子进程工作轮询方案分配工作关闭子进程和管道Main设计概念 进程池,即我们可以预先创建一堆子进程和对应的管道。等父进程有任务时派发给子进程工作。这样就可以节省开辟进程的花销: 当没有任务时,即管道为空…

作者头像 李华
网站建设 2026/4/2 12:15:17

Kubernetes 误删除防护:“授权—验证”双环防护机制”生产级最佳实践指南

Kubernetes 误删除防护:“授权—验证”双环防护机制”生产级最佳实践指南 Kubernetes 的灵活性与自动化能力,使其成为当今云原生时代最强大的编排基础设施之一。然而,这种强大也伴随着操作风险——一次错误的 kubectl delete,可能瞬间影响整个线上环境。 为了从根本上降低…

作者头像 李华
网站建设 2026/3/26 23:52:30

Wan2.2-T2V-A14B生成未来城市概念视频的艺术表现力

Wan2.2-T2V-A14B生成未来城市概念视频的艺术表现力 在影视预演、广告创意和虚拟场景设计领域,一个曾经需要数日建模与渲染的概念视频,如今可能只需几分钟就能从一段文字中“生长”出来。这种效率的跃迁背后,是文本到视频(Text-to-…

作者头像 李华
网站建设 2026/3/24 16:17:13

突破数学推理瓶颈:DeepSeek-Prover-V1.5开创形式化反馈训练新范式

突破数学推理瓶颈:DeepSeek-Prover-V1.5开创形式化反馈训练新范式 【免费下载链接】DeepSeek-Prover-V1 通过大规模合成数据,DeepSeek-Prover-V1 提升了语言模型在定理证明领域的表现,翻译数学竞赛题目生成 Lean 4 证明数据,实现 …

作者头像 李华
网站建设 2026/3/30 12:40:49

你还在手动配置量子环境?3种Docker镜像优化策略让你效率翻倍

第一章:量子计算环境的 Docker 镜像构建 在开发和测试量子算法时,构建一致且可复现的运行环境至关重要。Docker 提供了一种轻量级的容器化解决方案,能够封装量子计算所需的全部依赖项,包括 Qiskit、Cirq 或 PennyLane 等框架。 基…

作者头像 李华
网站建设 2026/3/30 10:45:15

IwaraDownloadTool 2025终极指南:零基础快速下载Iwara视频的完整教程

你是否曾经在Iwara平台上遇到心仪的视频却无法快速保存?面对网络波动导致的下载中断是否感到束手无策?这款专为Iwara视频下载设计的开源工具IwaraDownloadTool将彻底解决你的烦恼。作为一款功能强大的视频下载工具,它支持批量下载、智能链接识…

作者头像 李华