Skip to content

Commit

Permalink
Add documents of leetbook IOA and
Browse files Browse the repository at this point in the history
selected coding interview.
  • Loading branch information
krahets committed Oct 10, 2023
1 parent 6def47c commit de1a505
Show file tree
Hide file tree
Showing 175 changed files with 23,813 additions and 0 deletions.
26 changes: 26 additions & 0 deletions leetbook_ioa/docs/# 0 引言.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 引言

《图解算法数据结构》面向算法初学者、互联网求职者设计,主要内容包括:

### 精选面试题图文解析

- 图文详解 75 道题目,覆盖主要算法知识点,非常适合作为算法学习的 **第一份题库**
- 题库活跃于各大互联网公司招聘中,可使笔面试准备事半功倍。
- 致力于行文深入浅出、图文搭配,提供简洁的 **Python, Java, C++** 解题代码。
- 笔者整理了 **题目分类****刷题计划** ,让刷题有迹可循。

### 数据结构与算法专栏

- **基础知识:** 时间复杂度、空间复杂度等算法知识。
- **数据结构:** 数组、链表、字符串、栈、队列、哈希表、树、图、堆。
- **算法专题:** 搜索与回溯、分治、动态规划、贪心、排序、位运算、模拟、数学。

## 配套代码

为方便各位 Debug 算法题目,笔者整理了本 LeetBook 的配套代码,包括:

- 「题解代码」提供 Python, Java, C++ 语言。
- 「测试样例」与运行调用代码。
- 「数据结构」封装,提升 LeetCode 刷题效率。

与本 LeetBook 配合食用更佳,仓库链接:https://github.com/krahets/LeetCode-Book
14 changes: 14 additions & 0 deletions leetbook_ioa/docs/# 0.1 刷题建议.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# 刷题建议

本书专为算法初学者设计,特别针对有意进入互联网行业的求职者。内容覆盖如下主题:

- **算法**:搜索、查找、排序、双指针、回溯、分治、动态规划、贪心、位运算、数学等。
- **数据结构**:数组、栈、队列、字符串、链表、树、图、堆、哈希表等。

所有题目已经进行分类,并按照难易程度排序。对于初学者,这里提供几条刷题建议:

1. 建议每日刷 2~3 题。若能轻松完成,可以尝试增加至 5~8 题,但请记住:刷题的质量远重要于数量。务必确保你真正理解了每个题目的解法及背后的算法原理。
2. 建议你按照目录顺序逐题解答。如果碰到某些难以解决的题目,可以先跳过,稍后回顾时再挑战。
3. 很多题目都有不止一种解法,请你注意比较和探讨各种方法的特点和适用情况。
4. 如果你发现自己忘记了某个题目的解法,不必灰心。艾宾浩斯遗忘曲线指出,为了真正掌握一个知识点,通常需要复习至少3次。
5. 行百里者半九十。坚持至关重要,加油,相信你可以做到!
81 changes: 81 additions & 0 deletions leetbook_ioa/docs/# 0.2 题目分类.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# 题目分类

题目可能存在多种解法,下表仅列举最优解法(时间与空间复杂度最低)的算法和数据结构分类。

| 题目 | 算法分类 | 数据结构分类 |
| -------------------------------- | ---------------- | -------------- |
| 寻找文件副本 | 查找 | 数组 |
| 寻找目标值 - 二维数组 | 查找 | 数组 |
| 路径加密 | | 字符串 |
| 图书整理 I | | 栈与队列,链表 |
| 推理二叉树 | 分治 | 树,哈希表 |
| 图书整理 II | | 栈与队列 |
| 斐波那契数 | 动态规划 | 数组 |
| 跳跃训练 | 动态规划 | 数组 |
| 库存管理 I | 查找 | 数组 |
| 字母迷宫 | 回溯,搜索 | 数组,图 |
| 衣橱整理 | 回溯,搜索 | 数组,图 |
| 砍竹子 I | 贪心,数学 | |
| 砍竹子 II | 贪心,分治,数学 | |
| 位 1 的个数 | 位运算 | |
| Pow(x, n) | 分治,位运算 | |
| 报数 | | 数组 |
| 删除链表节点 | 双指针 | 链表 |
| 模糊搜索验证 | 动态规划 | 字符串 |
| 有效数字 | | 字符串 |
| 训练计划 I | 双指针 | 数组 |
| 训练计划 II | 双指针 | 链表 |
| 训练计划 III | 双指针 | 链表 |
| 训练计划 IV | 双指针 | 链表 |
| 子结构判断 | 搜索 ||
| 翻转二叉树 | 搜索 | 栈与队列,树 |
| 判断对称二叉树 | 搜索 ||
| 螺旋遍历二维数组 | 模拟 | 数组 |
| 最小栈 | 排序 | 栈与队列 |
| 验证图书取出顺序 | 模拟 | 栈与队列 |
| 彩灯装饰记录 I | 搜索 | 栈与队列,树 |
| 彩灯装饰记录 II | 搜索 | 栈与队列,树 |
| 彩灯装饰记录 III | 搜索 | 栈与队列,树 |
| 验证二叉搜索树的后序遍历序列 | 分治 | 栈与队列,树 |
| 二叉树中和为目标值的路径 | 回溯,搜索 ||
| 随机链表的复制 | | 链表 |
| 将二叉搜索树转化为排序的双向链表 | 搜索,双指针 ||
| 序列化与反序列化二叉树 | 搜索 ||
| 套餐内商品的排列顺序 | 回溯 | 字符串,哈希表 |
| 库存管理 II | | 数组 |
| 库存管理 III | 排序 | 数组,堆 |
| 数据流中的中位数 | 排序 ||
| 连续天数的最高销售额 | 动态规划 | 数组 |
| 数字 1 的个数 | 数学 | |
| 找到第 k 位数字 | 数学 | |
| 破解闯关密码 | 排序 | 字符串 |
| 解密数字 | 动态规划 | 字符串 |
| 珠宝的最高价值 | 动态规划 | 数组 |
| 招式拆解 I | 动态规划,双指针 | 哈希表 |
| 丑数 | 动态规划 | |
| 招式拆解 II | | 哈希表 |
| 交易逆序对的总数 | 分治 | 数组 |
| 训练计划 V | 双指针 | 链表 |
| 统计目标成绩的出现次数 | 查找 | 数组 |
| 点名 | 查找 | 数组 |
| 寻找二叉搜索树中的目标节点 | 搜索 ||
| 计算二叉树的深度 | 搜索 ||
| 判断是否为平衡二叉树 | 搜索 ||
| 撞色搭配 | 位运算 | 数组 |
| 训练计划 VI | 位运算 | 数组 |
| 查找总价格为目标值的两个商品 | 双指针 | 数组 |
| 文件组合 | 双指针 | 数组 |
| 字符串中的单词反转 | 双指针 | 字符串 |
| 动态口令 | | 字符串 |
| 望远镜中最高的海拔 | 排序 | 数组,栈与队列 |
| 设计自助结算系统 | 排序 | 数组,栈与队列 |
| 统计结果概率 | 动态规划 | |
| 文物朝代判断 | 排序 | 数组,哈希表 |
| 破冰游戏 | 数学 | |
| 买卖芯片的最佳时机 | 动态规划 | 数组 |
| 设计机械累加器 | | |
| 加密运算 | 位运算 | |
| 按规则计算统计结果 | 数学 | 数组 |
| 不使用库函数的字符串转整数 | | 字符串 |
| 求二叉搜索树的最近公共祖先 | 搜索 ||
| 寻找二叉树的最近公共祖先 | 搜索 ||
Loading

0 comments on commit de1a505

Please sign in to comment.