Skip to content

Repository files navigation

LeetCode Hot 100 与代码手撕练习

本仓库按题型整理已有的 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 类和方法名;MinStackMedianFinder 等设计题沿用官方类名。
  • 链表和二叉树题目自带节点定义及测试辅助函数,因此无需依赖其他文件。
  • 原地修改题直接断言修改后的输入;无序答案规范化后比较;浮点和张量结果使用容差比较。
  • 本次整理只覆盖仓库原有内容,没有主动补齐全部 Hot 100。

依赖

  • LeetCode 题目与 算法模板:仅使用 Python 标准库。
  • AI手撕/机器学习:需要 NumPy。
  • AI手撕/深度学习:需要 PyTorch。

当前默认使用 Conda base 环境运行。若只学习 LeetCode,可以直接运行对应目录,不需要安装 NumPy 或 PyTorch。

About

个人算法与 AI 手撕练习仓库:按题型整理 LeetCode Hot 100,收录可独立运行的 Python 题解、每题至少 3 组测试用例,以及常用算法模板、深度学习和机器学习手撕实现。持续学习,每周更新。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages