阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


前言

有几位粉丝朋友微信和我聊天,说有些难,感觉烧脑。实话讲,确实如此,动态规划算法非常灵活,状态及状态转移方程往往比较难以找到,所以朋友们千万不要气馁,不要急躁,按照练习计划慢慢来。

往往越是困难的东西,学起来要付出的时间就越长,但是取得的回报却是最丰厚的。容易的东西,大家都能在短时间内掌握,所以你即便掌握它优势也不会太明显。

举一个亲身经历的事情,几年前参与评分了一次算法大赛,当时进入前10的队伍都很厉害的,在这么厉害的队伍里,只有一只队伍成功找到了问题关键几步的动态规划解法,从而一下节省了很多求解时间,并最终问鼎冠军。而这只队伍研究此领域的问题已有10余年,一切都不是偶然的!

算法的学习从来不是一蹴而就的,即便是算法专家,很可能也只对所研究领域的算法认识更加深刻。不过好在,先搞定基础算法或者基础算法思想,形成对它们的深刻认识后,再去做某领域的专业算法就有了垫脚石,就会变得更加从容不迫。

目前基本上所有大厂,不管面试前端、后端、算法,只要是开发岗,基本都会考算法题,有的每轮都考算法题。我前段时间有个同事刚跳槽到微软,他告诉我技术面共面了5轮,每轮都有算法题目! 所以,如果你的梦想是现在或不久的将来进入大厂,那么基本的数据结构和算法,是要滚瓜烂熟的。

基本算法

1. bucket-sort

2. selection-sort

3. radix-sort

4. simulate

5. construction

6. insertion-sort

7. merge-sort

8. 一种缓存机制-最近最少使用

9. counting-sort

10. binary

11. tournament-sort

12. 如何在O(1)内找到实时序列的最小值

13. dynamic-programming-intro

14. complexity

15. prefix-sum

16. use-of-sort

17. quick-sort

18. stack-intro

19. enumerate

20. divide-and-conquer

21. algorithm-backtracking

22. greedy

23. shell-sort

24. stl-sort

25. bubble-sort

26. sort-intro

27. binary-lifting

28. heap-sort

29. index