algo-zh 2020.9.27.0
结构化算法刷题训练指南
Requires Python: >=3.6

# 结构化算法刷题训练指南

> 此仓库是 [apachecn/Interview](https://github.com/apachecn/Interview) 的只读备份，用于打包和分发。任何修改请在原仓库上进行。
> 
> **欢迎任何人参与和完善：一个人可以走的很快，但是一群人却可以走的更远**

* 英文官网: https://leetcode.com
* 中文官网: https://leetcode-cn.com
* [在线阅读](https://algo.apachecn.org/)
* [ApacheCN 组织资源](https://docs.apachecn.org/)
* **ApacheCN - 面试求职群【724187166】<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=9bcf2fb3985835c9c2f15783ec9c85822e23be1191a6581eaf22f574b5192b19"><img border="0" src="http://data.apachecn.org/img/logo/ApacheCN-group.png" alt="ApacheCN - 面试求职群[724187166]" title="ApacheCN - 面试求职群[724187166]"></a>**

## 下载

### PYPI

```
pip install algo-zh
algo-zh <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g algo-zh
algo-zh <port>
# 访问 http://localhost:{port} 查看文档
```

## 关于刷题

```
刷题可能是目前来说：最有用，也是最没用的东西

有用只是指：面试最快捷的一种方式
最没用是指：基本上在工作中用不上

简单来说；形式主义为主，技术提升为辅，目的就是为了驯服和奴役思维

会刷题和当年会考试没有本质区别
我并没有觉得这个是一件值得骄傲的事情
相反，这恰恰是普通人没用选择的事情

我吐槽一下：
工作5年，面试还要刷题，写排序，聊一些优化细节和技巧，感觉比较惭愧
你能写出一个高性能的代码吗？（例如：处理10G，做排序）
你反问：为什么不用GPU和Spark.
他说：。。（他无语）
我觉得大家可能都很无语吧，最无语的应该是前沿的技术吧


很多时候，基本上你遇到问题百度一下答案就出来了
工作中你可能没遇到，但是面试你必须背下来，不管会不会

一个人的好坏，我觉得是在人的性格和搜索能力。
但是在各大公司的HR和不入流的面试官面前：高学历和强刷题
技术高低和花的时间有关系，而工作是否录取和高学历和强刷题有关

```

---

当然我们得先战胜市场，才能改变市场！
下面正式开始我们刷题教程入门 -- 你准备好了吗？

## 数据结构 - 排序

* 二分查找
* 冒泡排序
* 插入排序
* 选择排序
* 快速排序
* 希尔排序
* 归并排序
* 基数排序

实战入口: <https://interview.apachecn.org/docs/Algorithm/DataStructure>

## [算法刷题](https://github.com/apachecn/Interview/tree/master/docs/Algorithm/README.md)

1. [Leetcode](/docs/Algorithm/Leetcode)
    - [Python](/docs/Algorithm/Leetcode/Python)
    - [Java](/docs/Algorithm/Leetcode/Java)
    - [JavaScript](/docs/Algorithm/Leetcode/JavaScript)
    - [C++](/docs/Algorithm/Leetcode/C++)
    - [ipynb](/docs/Algorithm/Leetcode/ipynb)
    - [GO](https://github.com/aQuaYi/LeetCode-in-Go)
    - [Golang](https://github.com/kylesliu/awesome-golang-leetcode)
2. [剑指 Offer](/docs/Algorithm/剑指offer)
    - [Python](/docs/Algorithm/剑指offer/Python)
    - [Scala](/docs/Algorithm/剑指offer/Scala)
    - [Java](/docs/Algorithm/剑指offer/Java)
    - [JavaScript](/docs/Algorithm/剑指offer/JavaScript)
    - [C++](/docs/Algorithm/剑指offer/C++)
3. [数据结构](/docs/Algorithm/DataStructure)
    - [Wikipedia: List of Algorithms](https://en.wikipedia.org/wiki/List_of_algorithms)

## 参与方式

> 提交PR基本要求（满足任意一种即可）

* 不一样的思路
* 优化时间复杂度和空间复杂度，或者解决题目的Follow up
* 有意义的简化代码
* 未提交过的题目

> **案例模版**

[模版 md: 001. Two Sum 两数之和](docs/Algorithm/Leetcode/Python/001._two_sum.md)
[模版页面效果: 001. Two Sum 两数之和](https://interview.apachecn.org/docs/Algorithm/Leetcode/Python/001._two_sum.html)

## 推荐 LeetCode 网站

- [KrisYu的Github](https://github.com/KrisYu/LeetCode-CLRS-Python)
- [kamyu104的Github](https://github.com/kamyu104/LeetCode)
- [数据结构与算法/leetcode/lintcode题解](https://algorithm.yuanbin.me/zh-hans/)
- [Leetcode 讨论区](https://discuss.leetcode.com/)
- [visualgo算法可视化网站](https://visualgo.net/en)
- [Data Structure Visualization](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)
- [我的算法学习之路 - Lucida](http://zh.lucida.me/blog/on-learning-algorithms/)
- [HiredInTech](https://www.hiredintech.com/) System Design 的总结特别适合入门
- [mitcc的Github](https://github.com/mitcc/AlgoSolutions)
- [小土刀的面试刷题笔记](http://wdxtub.com/interview/14520594642530.html)
- [nonstriater/Learn-Algorithms](https://github.com/nonstriater/Learn-Algorithms)
- [剑指 Offer 题解](https://github.com/gatieme/CodingInterviews)
- https://github.com/liuchuo/LeetCode
- https://github.com/anxiangSir/SwordforOffer
- https://www.nowcoder.com/ta/coding-interviews?page=1
- [【小姐姐】刷题博客](https://www.liuchuo.net/about)
- [公瑾的Github](https://github.com/yuzhoujr/leetcode)
- [shejie1993](https://shenjie1993.gitbooks.io/leetcode-python/content/096%20Unique%20Binary%20Search%20Trees.html)
- [编程之法：面试和算法心得](https://legacy.gitbook.com/book/wizardforcel/the-art-of-programming-by-july/details)
- [算法/NLP/深度学习/机器学习面试笔记](https://github.com/imhuay/Interview_Notes-Chinese)

## 赞助我们

![](https://imgconvert.csdnimg.cn/aHR0cDovL2hvbWUuYXBhY2hlY24ub3JnL2ltZy9hYm91dC9kb25hdGUuanBn?x-oss-process=image/format,png)