工作了两年,之前一直沉浸在业务当中,感觉算法的用处不太大,在这两年的时间里跟算法相关的也就写过一个很基础的递归函数。刷过几道leetcode,每次做题花费的时间都很长,而且做了感觉对实际上的工作没啥帮助。事实证明,我还是太肤浅

最近在跟大佬们交流的时候,很遗憾的发现自己变成了只会说,只会出思路但是算法编程能力为0的人,惨痛的教训是今天一个快排的递归花了快一个小时才纠结出来,思路都有,想法也理解,题目答案也都看过好几次,就是记不住,记不住就算了,现场推算还推算不出来,本质上就是写的不够多,基础啥的都是渣渣,所以昨天列完前端发展方面的学习计划之后,今天开始列一下算法的学习思路。

说起算法,脑子里闪过最快的就是一堆名词,递归,动态规划,回溯,贪心,分治,然后就是各种排序,堆排,快排,二叉树,堆栈,对列等等等等,还有时间复杂度,空间复杂度之类的概念,这些都是最基础的方法和应用场景,目前而言想要学好算法,就得先从最基础的递归,动态规划,回溯,贪心,分治开始学起,不管是排序还是数据结构的实践,其实都是以算法思想为基础的。在实践里用的最多的就是递归和动态规划。

所以,过了一下脑子之后,给自己列了一个算法学习的学习路线(仅供参考,因为觉得挺适合我的)

1.算法基础,递归,动态规划

先将这两种算法的原理彻底弄明白,深深刻在脑子里,万变不离其宗,只要原理搞明白了,能把原理利用代码的形式输出来,其他的都不是问题

2.回溯,分治,贪心

这三种算法比起前两种算是进阶版了,同样的也需要明白原理,能将原理写出来,就成功了一大半

3.排序和查找

这是两类很典型的场景问题,js的排序用sort,查找用indexOf,lastIndexOf还有各种api,6得飞起,但还是需要从本质看问题,明白这些函数背后的原理,这样我们才会有机会实现创造,而不是单纯的使用。

4.数据结构

各种数据结构的代码实现以及数据结构的使用在我看来是更加底层的东西了,平时单纯业务开发根本用不上,但是很有学习的必要,特别是如果哪天你并不满足于单纯业务功能的时候,有了这些才能让技术更进一步。

小结:学习的思路暂时就这些,还是要努力啊,基础不可荒废。


just小千
10 声望3 粉丝