Skip to content

Commit

Permalink
Update README and gitignore
Browse files Browse the repository at this point in the history
  • Loading branch information
krahets committed Oct 10, 2023
1 parent de1a505 commit 759b1d4
Show file tree
Hide file tree
Showing 4 changed files with 233 additions and 20 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
__pycache__
.vscode
.DS_Store
.vscode
*.xlsx
50 changes: 31 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<p align="center">
<p align="left">
<a href="https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/">
<img src="https://pic.leetcode-cn.com/1599187248-gDiWnC-image.png" width="490">
</a>
</p>

<p align="center">
<p align="left">
<img src="https://img.shields.io/badge/LeetCode%20tests-75%20accepted-brightgreen">
<img src="https://img.shields.io/badge/Language-Python-teal">
<img src="https://img.shields.io/badge/Language-Java-orange">
Expand All @@ -13,39 +13,51 @@

[《图解算法数据结构》](https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/)是一本面向算法初学者和互联网求职者编写的 LeetBook 手册。

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

> 若本 LeetBook 对您有所帮助,请在页面右上角点个 Star :star: 支持一下,谢谢!
本仓库包含“图解算法数据结构”、“Krahets 笔面试精选 88 题”和“剑指 Offer”的题解内容,所有代码皆可一键运行:

```shell
LeetCode-Book
├── leetbook_ioa # 《图解算法数据结构》题解和专栏文档、代码
├── selected_coding_interview # 「Krahets 笔面试精选 88 题」题解文档、代码
└── sword_for_offer # 《剑指 Offer》题解文档、代码、刷题计划
```

## 如何入门算法?

### 第一步:看入门书

<p align="center">
<img src="https://www.hello-algo.com/index.assets/conceptual_rendering.png" width="175">
<p align="left" href="https://github.com/krahets/hello-algo">
<img src="https://www.hello-algo.com/index.assets/conceptual_rendering.png" width="170">
<img src="https://www.hello-algo.com/index.assets/hello_algo_mindmap_tp.png" width="280">
</p>

<p align="center">
《Hello 算法》:动画图解、一键运行的数据结构与算法教程
</p>
[《Hello 算法》](https://github.com/krahets/hello-algo):动画图解、一键运行的数据结构与算法教程。

<p align="center">
<a href="https://github.com/krahets/hello-algo">
前往仓库 >
</a>
&nbsp; &nbsp;
<a href="https://www.hello-algo.com/">
在线阅读 >
</a>
</p>
这本书旨在引导初学者探索数据结构与算法的知识地图,掌握完整的刷题工具库。

### 第二步:刷算法题

1. [Krahets 笔面试精选 88 题](https://leetcode.cn/studyplan/selected-coding-interview/):由“剑指 Offer”和“Hot 100”组成的高频面试题单。
2. [图解算法数据结构](https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/)[Interview-75](https://leetcode.cn/studyplan/coding-interviews/):题目更贴近实际应用,相对“剑指 Offer”难度有所增加。
推荐以下 LeetCode 题单(前两项 [@Krahets](https://leetcode.cn/u/jyd/) 题解全覆盖):

1. [Krahets 笔面试精选 88 题](https://leetcode.cn/studyplan/selected-coding-interview/):从“剑指 Offer”和“热题 100”精选出的 88 道高频算法笔试题。
2. [图解算法数据结构](https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/)[Interview-75](https://leetcode.cn/studyplan/coding-interviews/)):题目更贴近实际应用,相对“剑指 Offer”难度有所增加。
3. [LeetCode 热题 100](https://leetcode.cn/studyplan/top-100-liked/):力扣用户最喜爱的 100 道题。
4. [面试经典 150 题](https://leetcode.cn/studyplan/top-interview-150/):150 道经典面试力扣题。
5. [LeetCode-75](https://leetcode.cn/studyplan/leetcode-75/):精选面试必备的 75 道核心题目。

对初学者的刷题建议:

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

## License

Expand Down
119 changes: 119 additions & 0 deletions sword_for_offer/剑指 Offer 刷题计划.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# 剑指 Offer 刷题计划

剑指 Offer 系列题目非常适合作为算法入门题目集,尤其适合有互联网求职需求的同学们,能够让我们全面练习,快速搭建起算法与数据结构的知识框架。

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

笔者整理了本刷题计划,核心理念为从易到难、从基础类题目到综合类题目,供希望按照知识点类型顺序刷题的小伙伴们参考。

> 行百里者半九十。坚持一个月刷完,一起加油!
| 日程 | 题目 |
| :--------: | :-------------------------------------------- |
| **Day 1** | **栈与队列(简单)** |
| | 剑指 Offer 09. 用两个栈实现队列 |
| | 剑指 Offer 30. 包含 min 函数的栈 |
| **Day 2** | **链表(简单)** |
| | 剑指 Offer 06. 从尾到头打印链表 |
| | 剑指 Offer 24. 反转链表 |
| | 剑指 Offer 35. 复杂链表的复制 |
| **Day 3** | **字符串(简单)** |
| | 剑指 Offer 05. 替换空格 |
| | 剑指 Offer 58 - II. 左旋转字符串 |
| **Day 4** | **查找算法(简单)** |
| | 剑指 Offer 03. 数组中重复的数字 |
| | 剑指 Offer 53 - I. 在排序数组中查找数字 I |
| | 剑指 Offer 53 - II. 0~n-1 中缺失的数字 |
| **Day 5** | **查找算法(中等)** |
| | 剑指 Offer 04. 二维数组中的查找 |
| | 剑指 Offer 11. 旋转数组的最小数字 |
| | 剑指 Offer 50. 第一个只出现一次的字符 |
| **Day 6** | **搜索与回溯算法(简单)** |
| | 剑指 Offer 32 - I. 从上到下打印二叉树 |
| | 剑指 Offer 32 - II. 从上到下打印二叉树 II |
| | 剑指 Offer 32 - III. 从上到下打印二叉树 III |
| **Day 7** | **搜索与回溯算法(简单)** |
| | 剑指 Offer 26. 树的子结构 |
| | 剑指 Offer 27. 二叉树的镜像 |
| | 剑指 Offer 28. 对称的二叉树 |
| **Day 8** | **动态规划(简单)** |
| | 剑指 Offer 10- I. 斐波那契数列 |
| | 剑指 Offer 10- II. 青蛙跳台阶问题 |
| | 剑指 Offer 63. 股票的最大利润 |
| **Day 9** | **动态规划(中等)** |
| | 剑指 Offer 42. 连续子数组的最大和 |
| | 剑指 Offer 47. 礼物的最大价值 |
| **Day 10** | **动态规划(中等)** |
| | 剑指 Offer 46. 把数字翻译成字符串 |
| | 剑指 Offer 48. 最长不含重复字符的子字符串 |
| **Day 11** | **双指针(简单)** |
| | 剑指 Offer 18. 删除链表的节点 |
| | 剑指 Offer 22. 链表中倒数第 k 个节点 |
| **Day 12** | **双指针(简单)** |
| | 剑指 Offer 25. 合并两个排序的链表 |
| | 剑指 Offer 52. 两个链表的第一个公共节点 |
| **Day 13** | **双指针(简单)** |
| | 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 |
| | 剑指 Offer 57. 和为 s 的两个数字 |
| | 剑指 Offer 58 - I. 翻转单词顺序 |
| **Day 14** | **搜索与回溯算法(中等)** |
| | 剑指 Offer 12. 矩阵中的路径 |
| | 剑指 Offer 13. 机器人的运动范围 |
| **Day 15** | **搜索与回溯算法(中等)** |
| | 剑指 Offer 34. 二叉树中和为某一值的路径 |
| | 剑指 Offer 36. 二叉搜索树与双向链表 |
| | 剑指 Offer 54. 二叉搜索树的第 k 大节点 |
| **Day 16** | **排序(简单)** |
| | 剑指 Offer 45. 把数组排成最小的数 |
| | 剑指 Offer 61. 扑克牌中的顺子 |
| **Day 17** | **排序(中等)** |
| | 剑指 Offer 40. 最小的 k 个数 |
| | 剑指 Offer 41. 数据流中的中位数 |
| **Day 18** | **搜索与回溯算法(中等)** |
| | 剑指 Offer 55 - I. 二叉树的深度 |
| | 剑指 Offer 55 - II. 平衡二叉树 |
| **Day 19** | **搜索与回溯算法(中等)** |
| | 剑指 Offer 64. 求 1 + 2 + … + n |
| | 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 |
| | 剑指 Offer 68 - II. 二叉树的最近公共祖先 |
| **Day 20** | **分治算法(中等)** |
| | 剑指 Offer 07. 重建二叉树 |
| | 剑指 Offer 16. 数值的整数次方 |
| | 剑指 Offer 33. 二叉搜索树的后序遍历序列 |
| **Day 21** | **位运算(简单)** |
| | 剑指 Offer 15. 二进制中 1 的个数 |
| | 剑指 Offer 65. 不用加减乘除做加法 |
| **Day 22** | **位运算(中等)** |
| | 剑指 Offer 56 - I. 数组中数字出现的次数 |
| | 剑指 Offer 56 - II. 数组中数字出现的次数 II |
| **Day 23** | **数学(简单)** |
| | 剑指 Offer 39. 数组中出现次数超过一半的数字 |
| | 剑指 Offer 66. 构建乘积数组 |
| **Day 24** | **数学(中等)** |
| | 剑指 Offer 14- I. 剪绳子 |
| | 剑指 Offer 57 - II. 和为 s 的连续正数序列 |
| | 剑指 Offer 62. 圆圈中最后剩下的数字 |
| **Day 25** | **模拟(中等)** |
| | 剑指 Offer 29. 顺时针打印矩阵 |
| | 剑指 Offer 31. 栈的压入、弹出序列 |
| **Day 26** | **字符串(中等)** |
| | 剑指 Offer 20. 表示数值的字符串 |
| | 剑指 Offer 67. 把字符串转换成整数 |
| **Day 27** | **栈与队列(困难)** |
| | 剑指 Offer 59 - I. 滑动窗口的最大值 |
| | 剑指 Offer 59 - II. 队列的最大值 |
| **Day 28** | **搜索与回溯算法(困难)** |
| | 剑指 Offer 37. 序列化二叉树 |
| | 剑指 Offer 38. 字符串的排列 |
| **Day 29** | **动态规划(困难)** |
| | 剑指 Offer 19. 正则表达式匹配 |
| | 剑指 Offer 49. 丑数 |
| | 剑指 Offer 60. n 个骰子的点数 |
| **Day 30** | **分治算法(困难)** |
| | 剑指 Offer 17. 打印从 1 到最大的 n 位数 |
| | 剑指 Offer 51. 数组中的逆序对 |
| **Day 31** | **数学(困难)** |
| | 剑指 Offer 14- II. 剪绳子 II |
| | 剑指 Offer 43. 1~n 整数中 1 出现的次数 |
| | 剑指 Offer 44. 数字序列中某一位的数字 |
Loading

0 comments on commit 759b1d4

Please sign in to comment.