基于LeetCode 234题的回文链表算法可视化实现,使用TypeScript + React + D3.js构建。
该项目是对回文链表判断算法的可视化实现,使用了快慢指针 + 反转后半链表的方法,时间复杂度O(n),空间复杂度O(1)。
可视化过程包括以下步骤:
- 链表初始化
- 使用快慢指针找到链表中点
- 反转链表后半部分
- 比较前半部分和反转后的后半部分
- 恢复链表原始结构(可选)
- 展示判断结果
- React 19
- TypeScript
- D3.js (数据可视化)
- RxJS (流式状态管理)
在运行项目前,需要安装以下依赖:
npm install d3 @types/d3 rxjs --save
npm run dev
npm run build
/src/types
: 类型定义/src/components
: React组件/src/context
: 状态管理上下文/src/utils
: 工具函数/src/engine
: 算法引擎
回文链表判断的O(1)空间复杂度解法步骤:
-
使用快慢指针(fast和slow)找到链表中点
- 快指针每次移动两步
- 慢指针每次移动一步
- 当快指针到达末尾时,慢指针恰好在中点
-
反转链表后半部分
- 从slow指针后的节点开始反转
-
从链表头部和反转后的后半部分头部开始比较
- 如果所有对应节点值都相等,则是回文
- 任意一对不相等,则不是回文
-
(可选)恢复链表结构
- 再次反转后半部分并连接回原链表
MIT
修复了GitHub Actions权限问题,现在可以成功部署到GitHub Pages。