Bare Algo
搜索算法...
Ctrl+K
栈与队列
栈和队列的基本操作及其在算法中的应用。
算法题
(12)
20. 有效的括号
简单
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
栈
字符串
155. 最小栈
中等
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
栈
设计
232. 用栈实现队列
简单
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)。
栈
设计
队列
225. 用队列实现栈
简单
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。
栈
设计
队列
239. 滑动窗口最大值
困难
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
队列
滑动窗口
堆
单调队列
394. 字符串解码
中等
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。
栈
字符串
递归
150. 逆波兰表达式求值
中等
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。
数组
数学
栈
71. 简化路径
中等
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。
栈
字符串
224. 基本计算器
困难
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
数学
栈
递归
227. 基本计算器 II
中等
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。
数学
栈
933. 最近的请求次数
简单
写一个 RecentCounter 类来计算特定时间范围内最近的请求。
队列
设计
数据流
622. 设计循环队列
中等
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。
数组
链表
设计
队列
实际应用
(7)
Undo/Redo (撤销/重做)
中等
在编辑器、白板或表单应用中,使用两个栈(Undo Stack 和 Redo Stack)管理用户的历史操作。
双栈
编辑器
状态管理
请求调度与缓冲
中等
实现并发控制队列(同一时间限制最大请求数)、重试队列或优先级队列。使用队列结构顺序执行异步任务。
队列
优先队列
网络请求
并发控制
解析与编译
困难
解析数学表达式(如计算器)、编程语言语法或 HTML 嵌套标签。利用栈处理符号优先级和嵌套结构匹配。
栈
解析器
编译原理
消息缓冲
中等
处理 WebSocket 消息积压或日志上报队列。使用队列暂存短时间内大量涌入的数据,按顺序消费或批量上传。
队列
缓冲区
通信
高性能
滚动窗口统计
中等
监控最近 N 分钟内的 RPS(每秒请求数)或错误率。使用定长队列(或循环队列)维护最近的时间窗口数据。
单调队列
循环队列
监控
统计
路由栈/弹窗栈
简单
管理多层模态框(Modal)或移动端页面导航栈。使用栈结构管理页面的 Push/Pop,确保正确的层级和返回顺序。
栈
路由
交互
限流与节流
中等
实现滑动窗口限流。使用队列记录最近请求的时间戳,移除过期的请求记录,以此判断当前请求是否超限。
队列
滑动窗口
性能优化
安全