Skip to content

fuck-algorithm/leetcode-234-palindrome-linked-list

Repository files navigation

回文链表算法可视化

基于LeetCode 234题的回文链表算法可视化实现,使用TypeScript + React + D3.js构建。

项目介绍

该项目是对回文链表判断算法的可视化实现,使用了快慢指针 + 反转后半链表的方法,时间复杂度O(n),空间复杂度O(1)。

可视化过程包括以下步骤:

  1. 链表初始化
  2. 使用快慢指针找到链表中点
  3. 反转链表后半部分
  4. 比较前半部分和反转后的后半部分
  5. 恢复链表原始结构(可选)
  6. 展示判断结果

技术栈

  • 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)空间复杂度解法步骤:

  1. 使用快慢指针(fast和slow)找到链表中点

    • 快指针每次移动两步
    • 慢指针每次移动一步
    • 当快指针到达末尾时,慢指针恰好在中点
  2. 反转链表后半部分

    • 从slow指针后的节点开始反转
  3. 从链表头部和反转后的后半部分头部开始比较

    • 如果所有对应节点值都相等,则是回文
    • 任意一对不相等,则不是回文
  4. (可选)恢复链表结构

    • 再次反转后半部分并连接回原链表

许可证

MIT

解决GitHub Actions部署问题

修复了GitHub Actions权限问题,现在可以成功部署到GitHub Pages。