本仓库按题型整理已有的 LeetCode 题解,并单独收录算法模板、深度学习和机器学习手撕代码。每道题一个 Python 文件,每个练习文件都可以独立运行,并内置至少 3 个 assert 测试用例。
.
├── 普通数组/ # 数组操作、区间、前后缀等
├── 哈希/ # 哈希表、前缀和计数
├── 双指针技巧/ # 相向双指针、区间双指针
├── 滑动窗口/ # 定长与不定长滑动窗口
├── 矩阵/ # 二维数组操作与搜索
├── 栈/ # 普通栈、单调栈、设计题
├── 堆/ # Top K、双堆等
├── 二分查找/ # 标准二分与矩阵二分
├── 链表/ # 链表基本操作、快慢指针
├── 二叉树/ # DFS、树形递归、前缀和
├── 算法模板/ # 排序、手写堆、建树遍历、ACM I/O
├── AI手撕/
│ ├── 深度学习/ # Softmax、Attention、神经网络等
│ └── 机器学习/ # K-Means、KNN、线性回归、AUC
└── run_all_tests.py # 全量测试入口
LeetCode 文件采用 题号_中文题名.py 命名,例如:
哈希/001_两数之和.py
二叉树/104_二叉树的最大深度.py
conda run -n base python '哈希/001_两数之和.py'文件中的 run_tests() 会运行至少 3 个普通、边界或特殊测试用例;断言失败时进程会直接报错。
conda run -n base python run_all_tests.py总入口会通过独立子进程逐个运行文件。即使某个文件失败,其余文件仍会继续执行;最终会列出汇总和失败详情,并以非零状态码退出。
conda run -n base python -m compileall -q .- LeetCode 题目优先使用官方
Solution类和方法名;MinStack、MedianFinder等设计题沿用官方类名。 - 链表和二叉树题目自带节点定义及测试辅助函数,因此无需依赖其他文件。
- 原地修改题直接断言修改后的输入;无序答案规范化后比较;浮点和张量结果使用容差比较。
- 本次整理只覆盖仓库原有内容,没有主动补齐全部 Hot 100。
- LeetCode 题目与
算法模板:仅使用 Python 标准库。 AI手撕/机器学习:需要 NumPy。AI手撕/深度学习:需要 PyTorch。
当前默认使用 Conda base 环境运行。若只学习 LeetCode,可以直接运行对应目录,不需要安装 NumPy 或 PyTorch。