《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

🔥小叶-duck个人主页

❄️个人专栏《Data-Structure-Learning》

《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心

未择之路,不须回头
已择之路,纵是荆棘遍野,亦作花海遨游


目录

13 水果成篮

题目链接:

​编辑

题目示例:

解法(滑动窗口):

算法思路:

算法流程:

C++代码演示:方法一(使用容器)

C++代码演示:方法二(用数组模拟哈希表)

算法总结及流程解析:

结束语


13 水果成篮

题目链接:

题目示例:

解法(滑动窗口):

算法思路:

      研究的对象是一段连续的区间,可以使用【滑动窗口】思想来解决问题。

      让滑动窗口满足:窗口内水果的种类只有两种。

      做法:右端水果进入窗口的时候,用哈希表统计这个水果的频次。这个水果进来后,判断哈希表的大小

  • 如果大小超过 2:说明窗口内水果种类超过了两种。那么就从最左侧开始依次将水果划出窗口,直到哈希表的大小小于 2 ,然后更新结果;
  • 如果没有超过 2 ,说明当前窗口内水果的种类不超过两种,直到更新结果 len。
算法流程:

  1.初始化哈希表 hash 来统计窗口内水果的种类和数量;

  2.初始化变量:左右指针 left = 0,right = 0,记录结果的变量 len = 0;

  3.当 right 小于数组大小的时候,一直执行下列循环:

  • 将当前水果放入哈希表
  • 判断当前水果进来后,哈希表的大小:

            如果超过 2:

                        将左侧元素滑出窗口,并且在哈希表中将该元素的频次减一;

                        如果这个元素的频次减一之后变成了 0,就把该元素从哈希表中删除;

                        重复上述两个过程,直到哈希表中的大小不超过 2;

  • 更新结果 len;
  • right++,让下一个元素进入窗口;

  4.循环结束后, len 存的就是最终结果。

C++代码演示:方法一(使用容器)

class Solution { public: int totalFruit(vector<int>& fruits) { //方法一:使用容器(如果对哈希掌握不是很好可以看下面方法二) unordered_map<int ,int> hash; //统计窗口内出现水果的种类 int left = 0; int right = 0; int len = 0; for(right = 0; right < fruits.size(); right++) { hash[fruits[right]]++; //进窗口 while(hash.size() > 2) //判断 { hash[fruits[left]]--; //出窗口 if(hash[fruits[left]] == 0) { hash.erase(fruits[left]); } left++; } len = max(len, right - left + 1); //更新结果 } return len; } };

C++代码演示:方法二(用数组模拟哈希表)

class Solution { public: int totalFruit(vector<int>& fruits) { //方法二:用数组模拟哈希表(只需要了解哈希可以对数据存放的次数进行计数即可) int hash[100001] = { 0 };//根据题目提示可知水果种类最多不超过100000 int left = 0; int right = 0; int len = 0; int kinds = 0; //用一个新变量来维护水果种类 for(right = 0; right < fruits.size(); right++) { if(hash[fruits[right]] == 0) { kinds++; } hash[fruits[right]]++; //进窗口 while(kinds > 2) //判断 { hash[fruits[left]]--; //出窗口 if(hash[fruits[left]] == 0) { kinds--; } left++; } len = max(len, right - left + 1); //更新结果 } return len; } };

算法总结及流程解析:

结束语

       到此,13 水果成篮 这道算法题就讲解完了。通过滑动窗口处理连续区间问题。当窗口内水果种类超过2种时,左指针右移调整窗口,利用哈希表统计频次,最终求出最大区间长度。提供C++两种实现:容器版和数组模拟哈希表版。希望大家能有所收获!

Read more

2025年AI领域年度深度总结:始于DeepSeek R1开源发布,终于Manus天价出海

2025年AI领域年度深度总结:始于DeepSeek R1开源发布,终于Manus天价出海

2025年AI领域年度深度总结:始于DeepSeek R1开源发布,终于Manus天价出海 摘要 站在2025年12月31日的终章回望,吴恩达曾说过:“2025年,是AI工业时代的黎明。”在经历了2023-2024年的“大炼模型”狂热后,2025年,AI终于从“概率模仿”跃向了“逻辑推理”的新阶段,从“对话框”到“行动流”的转折也逐渐显现。这一年,AI技术与产业的演进不仅仅是技术迭代那么简单,而是一场深刻的变革,清晰的产业蓝图开始显现:始于DeepSeek R1的开源突破,终于Manus的数十亿美元收购,验证了Agent商业化的巨大潜力。 2025年,AI不再是实验室中的抽象概念,而是逐步嵌入日常生产生活,以更加务实的姿态和广泛的应用场景,真正走向了社会的主流。从年初DeepSeek R1的开源发布到年末Manus的天价收购,这两件大事为2025年的AI发展定下了基调:开源与闭源的博弈,技术与商业的融合,模型与应用的深度对接,无疑为AI的未来铺设了一条发展道路。技术突破和产业落地不断交织,AI的角色正在悄然发生深刻的转变——从“辅助工具”走向了“自主执行者”。 文章目录

By Ne0inhk

Flowise开源优势解析:MIT协议下的自由定制与商用潜力

Flowise开源优势解析:MIT协议下的自由定制与商用潜力 1. 什么是Flowise:拖拽式LLM工作流的平民化革命 Flowise不是又一个需要写几十行代码才能跑起来的AI框架,而是一个真正让非程序员也能玩转大模型的可视化平台。它诞生于2023年,核心目标很朴素:把LangChain里那些让人头大的概念——链(Chain)、工具(Tool)、向量数据库(VectorStore)、提示模板(PromptTemplate)——变成画布上可拖可拽的“积木块”。你不需要懂Python装饰器,也不用研究LLM的token流处理逻辑,只要像搭乐高一样把节点连起来,就能生成一个能回答问题、能查文档、能调API的AI应用。 它的底层逻辑非常清晰:把复杂的技术封装成直观的操作。比如你想做一个公司内部知识库问答系统,传统做法是找工程师花几天时间写RAG流程,调试embedding模型、向量检索、重排序、答案生成……而在Flowise里,你只需要拖入一个“文本分割器”节点、一个“向量存储”节点、一个“LLM”节点,再连上线,填上你的知识文档路径,5分钟内就能在浏览器里看到效果。这种“所见即所得

By Ne0inhk
MiniMax AI 开源 MiniMax-M2.5

MiniMax AI 开源 MiniMax-M2.5

今天我们推出最新模型 MiniMax-M2.5。 该模型在数十万复杂现实场景中通过强化学习进行广泛训练,在编程、智能体工具使用与搜索、办公及一系列高经济价值任务上达到业界顶尖水平,其**SWE-Bench Verified通过率80.2%、Multi-SWE-Bench 51.3%、BrowseComp(含上下文管理)76.3%**的表现尤为亮眼。 经过高效推理与任务分解优化训练,M2.5执行复杂智能体任务时展现惊人速度,完成SWE-Bench Verified评估比M2.1快37%,与Claude Opus 4.6速度持平。 M2.5是首个让用户无需顾虑成本的尖端模型,真正实现"智能廉价如水电"的承诺。以每秒100 token的速度持续运行一小时仅需1美元。若降至每秒50 token,成本可低至0.3美元。我们希望M2.5的速度与成本优势能催生革命性智能体应用。 编程表现 在编程评估中,MiniMax-M2.5相较前代取得显著进步,达到业界顶尖水准。其多语言任务表现尤为突出。

By Ne0inhk
idea-claude-code-gui——Atomgit平台上的新玩具-不降智版本

idea-claude-code-gui——Atomgit平台上的新玩具-不降智版本

开源地址 gitcode:https://gitcode.com/zhukunpenglinyutong/idea-claude-code-gui github:https://github.com/zhukunpenglinyutong/idea-claude-code-gui  请留下你的star 目录 开源地址 核心价值 使用效果 安装与使用 具体配置 账号注册与登录 创建APIKey 配置操作 配置APIKey 效果测试 难度测试 模型show 额外总结 一、插件核心信息 二、安装与配置流程 三、功能测试效果 四、适用场景 核心价值 为开发者提供可视化操作界面,集成 Claude Code 和 OpenAI Codex 双 AI 工具,助力 AI 辅助编程,

By Ne0inhk