近年来,算法行业非常火爆,越来越多的人在学习算法。计算机的终极是人工智能,而人工智能的核心是算法,算法已渗透到互联网、商业、金融业、航空、军事等各个领域,改变着这个世界。
在IT领域,数据结构与算法的应用无处不在。数据结构与算法是计算机开发人员的基本功,很多面试都要考查数据结构与算法。数据结构与算法不仅可以培养我们的算法思维,提高分析问题、解决问题的能力,还可以让我们快速学习新技术,以更高的角度思考问题。
算法学习的过程,实际上是通过大量实例,充分体会遇到问题时该如何分析:采用什么数据结构,使用什么算法策略,算法的复杂性如何,是否有优化的可能,等等。
学习数据结构与算法的好处,除了进大厂拿高薪,最重要的是锻炼扎实内功,培养算法思维,拥有超强学习力。透过问题看本质,思维清晰,竞争必胜,吵架能赢。
整理了一个知识图谱,数据结构与算法学习框架,大家可以根据需要选学。该学习框架包括初级数据结构和高级数据结构,经典算法。常用的数据结构与算法,包括12种初级数据结构、15种常用STL函数、10种二叉树和图的应用,以及8种搜索技术。高级内容包括22种高级数据结构、7种动态规划算法、5种动态规划优化技巧,以及5种网络流算法。
算法学习建议
第1个建议:学经典,多理解。
算法书有很多,初学者最好选择图解较多的入门书。当然,也可以选择多本书,从多个角度进行对比和学习。先看书上的图解,理解各种经典问题的求解方法,如果还不明白,则可以看视频讲解,理解之后再看代码,尝试自己动手上机运行。如有必要,可以将算法的求解过程通过图解方式展示出来,以加深对算法的理解。
第2个建议:看题解,多总结。
在掌握了书上的经典算法之后,可以在刷题网站进行专项练习,比如贪心、分治、动态规划、网络流等。算法比数据结构更加灵活,对同一道题目可以采用不同的算法解决,算法复杂性也不同。如果想不到答案,则可以看题解,比较自己的想法与题解的差距。总结题目类型及最优解法,然后找相似的题目自己动手解决问题。
第3个建议:举一反三,灵活运用。
通过专项刷题,见多识广,总结常用的算法模板,熟练套路,举一反三,灵活运用。逐步提升刷题速度,力争bug free。