news 2026/6/14 15:25:40

这道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/6/12 12:49:13

【限时关注】金融行业加密标准解读:PHP如何合规实现非对称加密

第一章:金融支付中非对称加密的合规背景在金融支付系统中,数据安全与用户隐私保护是监管机构关注的核心议题。随着《支付卡行业数据安全标准》(PCI DSS)、《通用数据保护条例》(GDPR)以及中国《网络安全法》…

作者头像 李华
网站建设 2026/6/10 17:38:37

Wan2.2-T2V-A14B在汽车发布会虚拟舞台设计中的全流程应用

Wan2.2-T2V-A14B在汽车发布会虚拟舞台设计中的全流程应用 在高端汽车品牌的新品发布会上,观众早已不再满足于静态展示或简单的PPT讲解。他们期待的是沉浸式的感官冲击——灯光随引擎声浪跳动,车身在全息舞台上缓缓升起,背景城市随着车辆启动而…

作者头像 李华
网站建设 2026/6/14 13:19:50

正则表达式

今天我们来讲讲正则表达式,那么什么是正则表达式呢,正则表达式是通过元字符(具有特殊含义的字符)和普通字符(如字母,数字)组合而成的“规则字符串”。语法都是各种符号,不好理解,不好记忆&#…

作者头像 李华
网站建设 2026/6/10 18:53:34

Wan2.2-T2V-A14B能否生成股市走势预测动画?金融内容边界探讨

Wan2.2-T2V-A14B能否生成股市走势预测动画?金融内容边界探讨 在短视频与AI技术深度融合的今天,一个看似简单的问题正在挑战行业的认知边界:我们能不能让大模型“画”出明天的股价?更具体地说,像 Wan2.2-T2V-A14B 这样参…

作者头像 李华