news 2026/6/17 16:16: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/6/17 9:54:22

Wan2.2-T2V-A14B在跨境电商产品展示视频中的多语言适配优势

Wan2.2-T2V-A14B在跨境电商产品展示视频中的多语言适配优势 在全球化电商竞争日益激烈的今天,一个中国卖家上架的新款智能手表,可能在发布当天就要面对英语、西班牙语、阿拉伯语用户的浏览与下单。而决定他们是否点击购买的关键,往往不是参数…

作者头像 李华
网站建设 2026/6/12 5:03:22

LLM代码评审Agent实战:基于Qwen3-Coder与RAG的企业级应用!

简介 文章介绍了基于Qwen3-Coder、RAG和Iflow实现的LLM代码评审Agent实践,通过百炼Embedding构建知识索引,在CI流水线中自动触发AI评审。该方案在C3级安全仓库中成功落地,已累计执行上千次评审,有效发现并发缺陷、资源泄漏等传统…

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

HarmonyOS 6.0 ArkWeb开发实战:从基础到进阶的ArkUI+ArkTS实践

Hello,我是程序员Feri一、ArkWeb初相识:HarmonyOS的「Web桥梁」 在HarmonyOS 6.0中,ArkWeb(方舟Web)是连接原生应用与Web生态的核心组件。它基于Chromium M132内核(默认),不仅支持加…

作者头像 李华
网站建设 2026/6/15 19:21:24

从零开始:部署Tailchat私有聊天系统详细教程

前言 在数字化协作日益重要的今天,一个安全、可控的即时通讯平台对于团队协作至关重要。Tailchat作为一款完全开源、高度可扩展的即时通讯应用,凭借其插件化架构和微服务设计,为用户提供了搭建私有聊天系统的理想选择。与常见的云聊天工具不…

作者头像 李华
网站建设 2026/6/10 5:11:59

告别AI失忆症!Mem0+Milvus打造AI长期记忆,小白也能快速上手!

简介 文章介绍了Mem0,一个为AI智能体打造的记忆层解决方案,能有效解决AI失忆问题。Mem0通过持久化存储用户偏好和历史对话,使AI能在多轮对话中保持连贯性。文章详细展示了Mem0与传统RAG系统的区别,以及其核心工作流程&#xff1a…

作者头像 李华
网站建设 2026/6/16 23:54:40

Day 28 函数的定义与参数

import mathdef calculate_circle_area(radius):try:if radius < 0:return 0area math.pi * (radius ** 2)return areaexcept:return 0# 测试代码 print(calculate_circle_area(5)) print(calculate_circle_area(0)) print(calculate_circle_area(-1)) def calculat…

作者头像 李华