news 2026/4/23 5:14:27

这道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/4/19 17:50:27

14、MobX 实用工具与内部机制深度解析

MobX 实用工具与内部机制深度解析 1. MobX-State-Tree 实用特性 1.1 不可变快照(Immutable Snapshots) MST 会在内存中保留状态树的不可变版本,可通过 getSnapshot() API 获取。例如: const snapshot = getSnapshot(tree);这与 const tree = Type.create(snapshot)…

作者头像 李华
网站建设 2026/4/22 3:22:53

国内大模型产业突破:ERNIE 4.5 技术创新引领行业智能化升级新范式

近年来,随着人工智能技术的飞速发展,大语言模型(LLM)已成为推动各行各业智能化转型的核心引擎。在这一赛道上,国内科技企业凭借持续的技术投入和本土化创新,不断缩小与国际领先水平的差距,甚至在…

作者头像 李华
网站建设 2026/4/3 4:12:05

Wan2.2-T2V-A14B如何生成带有阴影变化的日光轨迹?

Wan2.2-T2V-A14B如何生成带有阴影变化的日光轨迹? 在影视预演、广告创意和虚拟制片日益依赖AI内容生成的今天,一个看似简单却极具挑战的任务浮出水面:如何让一段由文本生成的视频,真实还原从清晨到正午阳光缓缓移动时,…

作者头像 李华
网站建设 2026/4/21 18:40:23

Docker的AI模型版本管理方案(企业级实践案例曝光)

第一章:Docker的AI模型版本管理方案在AI模型开发与部署过程中,版本控制是确保可重复性、可追溯性和环境一致性的关键环节。Docker通过容器化技术为AI模型提供了隔离且可复制的运行环境,结合镜像标签和分层文件系统,成为管理不同模…

作者头像 李华
网站建设 2026/4/18 11:31:25

Wan2.2-T2V-A14B在虚拟偶像直播中的背景动态生成支撑

Wan2.2-T2V-A14B在虚拟偶像直播中的背景动态生成支撑 你有没有想过,一个虚拟偶像能在她说出“让我们飞向银河尽头”这句话的瞬间,身后真的浮现出缓缓旋转的星河、流动的极光和深邃的宇宙?这不是科幻电影,而是正在发生的现实。随着…

作者头像 李华