# 算法

具有良好的数据结构和算法知识是每一个高级程序员的必备技能。本篇文章介绍对于前端工程师来说如何学习算法。

对于科班与非科班最大的区别来说就是对计算机底层数据结构以及算法的理解。但如果科班同学对专业课的学习并不是很好,那么在这一方面对比非科班的同学来说并没有什么优势。而对于非科班的同学来说,如果能够掌握良好的数据结构和算法基础,对职业生涯的发展具有很大的帮助

# 初始准备

算法的底层是数据结构,个人认为学习数据结构最大的目的并不是为了学会它,而是能够知道不同的数据结构出现的目的和适用场景。例如链表和数组的区别,什么时候该用树,该用什么树。这一点才是最重要的,最关键的是不能为了学而学,否则非常容易遗忘

# 学习材料

个人推荐一些图文结合的书籍,比起纯文字和代码的书籍更易于理解

大话数据结构 (opens new window) 算法图解 (opens new window)

# 在线课程

数据结构-浙江大学 (opens new window)
清华大学-邓俊辉MOOC数据结构与算法全套 (opens new window)

# 文章

动态规划 (opens new window) 背包问题 (opens new window)

# 网站

leetcode (opens new window) 算法可视化 (opens new window)