把所有经典算法写一遍,一定要自己动手理解算法的应用场景,知其所以然。
比如统计整数二进制中1的个数这个算法,在文本内容相似性中有应用;不然刷再多题目也只具备短期价值加入算法学习社区,不得不说一个人学习算法,坚持是最难的事情,如果有几个( 3~5个即可)目标兴趣一致的同学一起,能起到一定正面的作用看经典书籍,这方面书很多,不一一列举了详细步骤:一、在刷题之前,要先具备一定的基础,这些基础包括:1、常见数据结构:链表、树(如二叉树)。
2、常见算法思想:贪婪法、分治法、穷举法、动态规划,回溯法。
以上列出来的算是最基本的吧。
就是在你刷题之前,要把这些基础知识过一遍再去刷题。
如果你连这些最基本的都不知道的话,那么你再刷题的过程中,会很难受的,思路也会相对比较少。
二、进行大量相关编程练习,用编程语言去实现某一数据结构上的算法理解一个算法很容易,很容易在纸上去模拟一个算法的实现过程。
但,具体实现,则是另一回事。
一定得先自己思考,然后再去看书中给的编程语言实现。
在我看来,这一过程已经不属于“数据结构与算法”的内容了。
而是你综合素质的体现,如何真正理解问题和用编程技巧实现,很考验自己。
这一过程,很难靠记忆。
而在不断敲代码的过程中去体会一些直觉上的东西。
如何用递归解决问题,如何使用循环,如何使用"哨兵”等等等等。
当然,敲完后需要去思考总结,看看能不能总结出一些”小套路“并记住。
三、一题多解算法能力的提升和做题的数量是有一定的关系,但并不是线性关系。
也就是说,在做题的时候,要力求一题多解,如果自己实在想不出来其他办法了,可以去看看别人是怎么做的,千万不要觉得模仿别人的做法是件丢人的事。
看到一道题,你可能第一想法就是用很粗糙的方式做,因为很多题采用暴力法都会很容易做,就是时间复杂度很高。
你要学会慢慢思考,看看有没其他方法来降低时间复杂度或空间复杂度。
最后,去看一下别人的做法,当然,并不是每道题都会这样执行。
衡量一道算法题的好坏无非就是时间复杂度和空间复杂度,所以我们要力求完美,就要把这两个降到最低,令他们相辅相成。
最后我想告诉你的是:算法在计算机这个行业中的重要性,可以说算法无处不在。
最常见的搜索引擎、智能机器人、推荐购物、扫雷游戏、人脸识别等。
只有学好算法才能创造出更有意义的东西,而不是简单的把数据取出来放到一个界面的就行了。
如果不能在算法方面有自己的建树,软件编程做到头也就是一个码农而已。
首先指出,我DS学的也很烂,不过有一些个人经验,希望对你有帮助。
王道数据结构这本书挺好用的。
就算你不考研,把这本书多看几遍肯定有许多提升,至少对我提升很大。
我是上完学校开的数据结构的课程后用这本书自学的,大概花了几个月看了两遍书,书后习题认真过了一遍。
感觉自己上升了一个层次,从上完课懵懵懂懂到对这门课有了一些清晰的认识,把自己的短板提高了一些,学其他的东西不会被卡住了。
其次就是学习的过程中多做题多思考,动手画图和上机把算法实现对理解也大有帮助。
有一本题集叫数据结构1800,我只做了一点点,题目挺丰富的,你可以看看。
然后,B站有许多相关学习视频,还有中国大学mooc网站也有学习视频,可以自己找找中意的,像华科出的数据结构好像就挺好。
最后,我每当学不下去的时候,我就从下图的角度看书,告诉自己当我把书翻厚,把整个颜色翻成黑色的时候我肯定就功力大成了,就很有成就感。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)