news 2026/6/25 14:26:34

代码随想录算法训练营day 10-11:栈与队列,滑动窗口最大值,大小顶堆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录算法训练营day 10-11:栈与队列,滑动窗口最大值,大小顶堆

用**栈**解决“匹配,消除,计算”问题

这类题的共同点:当前状态,依赖于最近一次未处理完的状态

对应习题:20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

做这些题会有一种“消消乐”的感觉,当前元素和上一个元素如果满足某种条件,进行一次操作,循环往复,这种情况是栈的天然适配场景

用**设计结构**解决“区间,频率”问题

这类题的共同点:为“查询目标”定制数据结构

对应习题:239.滑动窗口最大值,347.前k个高频元素

这些题就体现了:队列比起一个“容器”,它更像一种“行为约束”,栈同理。

239.滑动窗口最大值

要做这题,首先要注意到一个关键事实:“当窗口内的某个元素的后续元素比它自身大时,这个元素就不可能成为最大值了”。

为什么呢?举个例子:假设窗口内元素为[ 4,3,2,5 ],窗口内的 4 ,3 ,2如果想成为最大值,需要等待比他们大的5滑出窗口,然而事实是,窗口向右滑动,4,3,2绝对比5先滑出窗口,所以在5进入窗口的那一刻,前三个元素已经不可能成为最大值

所以我们要做的是,维护一个非单增队列,储存可能成为当前窗口最大值的候选,队头是当前窗口最大值,窗口滑动后,若队头滑出窗口,队头出队即可,需要元素入队时,删除所有比该元素大的队尾元素,然后该元素进入队尾,由此来维护队列的“非单调递增性”,明白了这个单调队列的思想,剩下的操作就比较简单了。

347.前k个高频元素

这题可以用“”来做,即优先队列,堆的顶部永远是最大或最小值,所以,先用HashMap统计一遍频率,再把元素塞入堆,用大顶堆还是小顶堆呢?其实用小顶堆会更好,如果用大顶堆,那该堆需要维护所有的元素频率,再弹出顶部元素k次,得到topk,内存和时间都会有浪费。其实用容量为k的小顶堆即可,频率比堆顶大的元素就入堆,堆容量大于k就弹出顶部的最小频率,最后得到topk

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 18:49:05

10 个课堂汇报 AI 工具,本科生降AI率推荐

10 个课堂汇报 AI 工具,本科生降AI率推荐 论文写作的“三座大山”:任务多、时间紧、降重难 对于本科生来说,大学的学习生活充满了挑战。尤其是到了学期末,课堂汇报、论文写作、文献综述等任务接踵而至,让人应接不暇。…

作者头像 李华
网站建设 2026/6/23 22:08:10

Dify插件开发完整指南:从环境搭建到部署

Dify插件开发完整指南:从环境搭建到部署 在大模型(LLM)技术快速落地的今天,开发者面临的不再是“能不能用AI”,而是“如何高效、稳定地将AI能力嵌入真实业务”。一个典型的挑战是:你的智能客服需要调用订单…

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

YOLO-V5快速上手指南:从环境搭建到检测

YOLO-V5实战入门:从零构建目标检测系统 在智能安防、工业质检和自动驾驶日益普及的今天,如何快速实现一个高精度、可落地的目标检测系统,成了许多开发者面临的现实问题。传统的两阶段检测器虽然精度高,但推理速度慢;而…

作者头像 李华
网站建设 2026/6/24 20:18:00

Dify智能体平台融合GPT-SoVITS打造拟人客服系统

Dify智能体平台融合GPT-SoVITS打造拟人客服系统 在客户服务正从“能用”迈向“好用”的今天,用户不再满足于冷冰冰的自动回复。他们期待的是有温度、有辨识度、甚至能唤起信任感的声音交互体验。然而,传统语音客服系统长期受限于音色单一、定制成本高、部…

作者头像 李华
网站建设 2026/6/24 18:30:04

中小企业备份方案: 本地备份 vs. 云备份, 哪个是企业最佳选择?

越来越多的中小企业正在混合云环境中运营,它们必须在保障数据安全的同时,平衡成本、灵活性与控制力。基于云和本地的数据及工作负载之间的分界线正不断变化,这就要求备份与恢复解决方案必须具备高度的通用性。过去十年间,云备份与…

作者头像 李华