当前位置:   article > 正文

Java程序员如何学习算法?有了这几份大佬笔记还不是一整个轻松拿捏,进大厂那也是完全不在话下!_如何学习java算法

如何学习java算法

算法刷题路线总结

经过对网上多方经验的参考,总结出自己的算法刷题路线如下:
(1)首先,复习数据结构与算法基础知识,形成完整的算法知识体系,最基本的数据结构,例如链表,队列,栈,二叉树等至少要先熟练掌握;
(2)接着刷LeetCode前100题,前100题是最为常见的题目,据说刷算法题0-100题是第一道坎,100-300题是第二道坎,那么度过第一道坎就可以让我们对算法题目有基本的认识,慢慢找到做题的感觉和思路,并拥有一定的做题能力,可以按照链表/二叉树/递归等这些标签来刷;
(3)然后就是算法能力提升阶段,要根据专题进行专项训练,掌握不同的解决问题的方法,并能够针对具体类别的问题产生相应的解题思路,可以参考下边专项刷题路线资料分享;
(4)最后就是进一步提高阶段,可以采用乱序刷题的方式,可以刷各种面经和高频题,推荐书籍《剑指offer》,这一阶段重在锻炼在面对不同问题的时候,能够选择最为合适的数据结构和算法,进一步加深对于算法的理解,同时拓展常用的算法思想,建立自己的理解。同时学习各种各样的解题技巧和思路,也要学习相关的数学知识。

算法题刷题步骤

互联网算法笔试题型介绍:

(1)基本数据结构的考察:这类题我是比较简单的,主要考场基本数据结构的操作,例如二叉树的层序遍历,链表的逆序等,当然,它不会直接告诉你,让你来逆序或者遍历。
(2)某种算法思想的掌握:这类题掌握了某种算法思想,就会比较容易,如果不懂,那就凉凉了。例如动态规划、回溯、枚举、深度/广度、贪心、二分等。其中,动态规划考的挺多,然后就是回溯+深度/广度。
(3)边界条件的考察:这类型的题,估计一看就有思路,知道该怎么做,但是,它的边界条件特别多,需要分很多种情况来讨论,特别容易出错,有时候会让人陷进去,越做越复杂,这类题主要考查思维严谨程度。
(4)找规律、数学公式:这类型的题,主要是根据数据之间的一些关系,来找一些规律,进而推出他们的通用公式,就像我们高中时,找数列的同项一样。

算法题刷题分三大步骤:

(1)分析题目属于哪一类题目,大概用到什么数据结构算法,是数组、链表、图、树?还是用递归动态规划这些方法。常见的算法题目一般只涉及到这几个方面。
(2)验证分析阶段的思路。注意常见错误:变量名写错,边界条件考虑不周。如果调试阶段超过写代码的30%时间,说明思考过程,方案设计很有问题。先反思分析设计方案除了什么错误,思考的不够系统吗?不要一边写,一边改方案,这样效率太低,而且你会逐渐适应低效率的节奏,这个负面影响太大。
(3)作总结,总结很重要。如果没做出来,反思什么阶段犯了错误。如果做出来了,思考解题的关键点是什么,总结题目特点,一定要总结这个题目属于哪一种类型,这个题目在这个类型中特点是什么,和其他这个类型的其他题目区别在哪里。只有经过总结,做过的题目才会真正进入你解题思维的一部分,解题能力的一部分。

刷题时的注意点:
(1)一眼就懂思路的题有必要做吗?答案是,有必要做。千万不要眼高手低,看着简单,做起来不一定简单,AC 之后,还要去讨论区看看大佬们是怎么做的,因为有些人的代码,写的很简洁,看着就很舒服,可以多学一学。
(2)尽量最优解。对于很多题,如果不看时间复杂度和空间复杂度,单单只是 AC,那还是很容易的,但是一提交,可能只打败了百分之几的人,显然我们不能只满足于这种代码。当做一道题时,一开始可以先暴力做,但后面还得想想该如何优化,想不出也没事,可以讨论区找空间/时间复杂度更低的代码,或者直接搜索引擎搜索,一般都能搜到别人的代码。之后跟着别人的代码,自己再实现一波,尽可能把最优解的代码实现起来。当你入门之后,更多的是要总结方法,寻找高效率的代码。

如何学习

我是在大三才意识到算法的重要性,当时在网上看了很多资料,但都比较零散,后来还是在字节实习的朋友给了我一本内部的算法图册,让我找到了学算法的窍门 。今天就把这个算法图册、左程云编写的算法书籍《程序员代码面试指南》分享给大家,顺便把LeetCode上最常见的算法题也一并打包分享,都是可以复制文字的那种,方便大家学习
对于算法相关的免费课程推荐左程云的算法课程,左神专注于算法指导,因此他的课程质量还是比较高的。另外,左程云编写的算法书籍《程序员代码面试指南》也堪称“神书”!书中对 IT 名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现,选取将近 300 道真实出现过的经典代码面试题,"刷”完这书,就是"题王”!

  • 前三章将帮助你打好基础

二分查找

数组与链表

递归

  • 余下的篇幅将介绍应用广泛的算法

遇到问题时,如果不确定该如何高效地解决,可尝试第4章的分而治之或第9章的动态规划;如果认识到根本就没有高效的解决方案,可转而使用第8章的贪婪算法来得到近似答案

分而治之

动态规划

贪婪算法

剩下的内容你们可以拿到手了自己看看,我这里就不过多介绍了,接下来看看面试题

  • 70+算法题、30种大厂笔试高频知识点

     

     

     

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/494762
推荐阅读
相关标签
  

闽ICP备14008679号