Bare Algo
搜索算法...
Ctrl+K
链表
链表的增删改查、反转、合并、环检测等经典操作。
算法题
(14)
206. 反转链表
简单
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
链表
递归
141. 环形链表
简单
给你一个链表的头节点 head ,判断链表中是否有环。
链表
双指针
哈希表
21. 合并两个有序链表
简单
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
链表
递归
142. 环形链表 II
中等
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
链表
双指针
146. LRU 缓存
中等
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。
哈希表
链表
设计
双向链表
19. 删除链表的倒数第 N 个结点
中等
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
链表
双指针
234. 回文链表
简单
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
链表
双指针
栈
递归
2. 两数相加
中等
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。
链表
数学
递归
24. 两两交换链表中的节点
中等
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
链表
递归
92. 反转链表 II
中等
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
链表
138. 随机链表的复制
中等
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。
哈希表
链表
160. 相交链表
简单
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
哈希表
链表
双指针
25. K 个一组翻转链表
困难
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
链表
递归
148. 排序链表
中等
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
链表
双指针
分治
排序
归并排序
实际应用
(6)
LRU 缓存策略
中等
在前端 API 请求缓存、Vue keep-alive 组件缓存或计算结果缓存中,使用哈希表 + 双向链表实现 LRU(最近最少使用)淘汰策略。
哈希表
双向链表
缓存
性能优化
Undo/Redo 历史记录
中等
在富文本编辑器、画板或复杂表单中,实现撤销/重做功能。虽然常用栈实现,但在需要限制历史长度或支持分支时,链表结构更为灵活。
双向链表
栈
编辑器
状态管理
流式数据拼接
简单
处理分片到达的文件流或视频流时,将按顺序到达的数据块拼接起来。链表结构非常适合这种需要频繁拼接和调整顺序的场景。
链表
数据流
O(1) 节点删除
中等
在某些交互场景中(如拖拽排序前),如果你已经持有了 DOM 节点或数据对象的引用,链表结构允许在 O(1) 时间内将其从列表中移除或移动。
链表操作
性能优化
操作
浏览器/路由历史
简单
模拟浏览器的前进/后退行为。History API 的底层逻辑可以抽象为双向链表,当前指针指向当前页面,支持前后移动。
双向链表
路由
浏览器原理
循环播放列表
简单
实现轮播图、音乐播放列表或循环定时任务时,使用循环链表结构可以自然地处理边界跳转问题(从最后一个跳回第一个)。
循环链表
轮播组件
播放器