万年自学党不请自来! 从完全0基础的小白到ACM金牌获得者,再到后来成为FB的面试官,我负责任的告诉你,数据结构与算法完全能靠自学来掌握。
首先数据结构和算法绝对是基础中的基础,不要怀疑自己的能力,但是学习起来也是非常的枯燥和琐碎。如果数据结构是一个程序的根基,那么算法就是一个程序的灵魂。实际上,面试过程中越是厉害的公司,就越是看重你数据结构和算法的基本功。
题主问怎么才算掌握数据结构和算法,如果靠背书抄代码,哪怕期末考了满绩,也不能说你真正掌握了,只有在面对一道题或是一个项目的时候,才知道代码量的积累不是靠背和抄,而是靠自己动手去写。
学习理论知识
首先还是从基础知识的学习讲起,科班出身还是推荐学习**《算法导论》**,看懂这本书并不难,难的是怎么坚持看下去,所以看《算法导论》一方面能够培养你以后看类似书籍的习惯(读完这本快八百页的书,相信以后看到CSAPP也不会腿软)。
另一方面作为入门学习去看**《算法图解》和《大话数据结构》**等类似的通俗易懂的书籍,虽然容易上手,但是对于算法这种要求细节的知识,仅仅通过配图的学习是远远不够的。
国内教材往往选用严蔚敏 的 《数据结构(C语言版)》 或者李春葆的《数据结构教程》,虽然作为教材它们的伪代码和注释都很详细,但是仅仅靠上课看看ppt下课写写作业,是不足以让你完全掌握。
通过线上课程查缺补漏
撇开看书自学的方式,其实也可以多看看线上课程,比如Coursera上Princeton University的算法系列课程,免费注册,适合掌握至少一门编程语言的初学者,开课至今好评如潮。