刷了一个半月算法题,我薪资终于Double了


戳蓝字“CSDN云计算”关注咱们哦!
程序员

640?wx_fmt=jpeg

技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,通通不在话下!算法

前言

不少人感受大公司都是要手写算法,那刷题是必不可少了,你技术再厉害,这关过不了,不少机会也会和你失之交臂,不少读者刷了很多算法去了头条,拼多多,薪资一下就double,好比以前20k,跳槽一下就40k,你说羡慕不羡慕。因此算法和数据结构,对程序员很重要。固然今天这篇文章不是来打广告的,而是小豪同窗整理了一些刷题心得分享给你们,由于方法大于勤奋,他15年毕业,以前一直在某TMD某家,刷了一个半月算法题,目前跳槽去了头条,薪资38k(多少k,他和我,没有利益相关,小豪同窗满意就行)。小豪同窗说这些心得有参考网上的《不羁的程序员小王》和《畅雨潇潇_》大佬总结,因此这里特地说明下,下面进入正文:编程

不要为了AC而AC

第一次刷题仍是大二,同窗之间挺流行一个Java的经典编程50题,第一遍AC耗时一个多月,过程很痛苦有好几回想要放弃,看题不懂方法,很难理解他人方案,不少题目看了答案只是知其然而不知其因此然,从不考虑复杂度,都是暴力法直接解决,不少解题方法经过看别人的方案去概括,照着抄。一个多月的时间本身算是入门了,第二遍的时候轻松不少。安全

如今看来刷题是没有技巧的,就是多作题多练多总结,对于不少新手不要去想是否是还有最优解什么的,你作的就是暴力法求解,刷题是很枯燥的,你须要给本身一点鼓励,当把题目解决之后再去考虑其余的,在你不能很快的解决问题的时候,但是试着写点伪代码或者画个流程图。当你通过大量的练习,会造成条件反射知道这是什么类型的题,用什么方法解决。微信

LeetCode刷题系列是按照某个专题进行的,这样对比着刷题效果是比较好的。千万不要耍小聪明用一些奇巧淫技,思路不对再怎么绕都是浪费时间。数据结构

遇到问题多找轮子,必定有人跟你同样菜遇到过一样的问题,一样不要想着本身造轮子,绝大多数问题前辈必定有更好更完善的方案在,本身造轮子费时费事又没太大意义。框架

必定要本身动手实现,看答案和本身作是两回事,本身作一遍之后会加深对问题的理解。不必把全部算法都精通,但起码在遇到问题时能够找到最优算法解决问题。即知道算法的存在及其用途,按需深刻学习。学习

最重要的一点坚持下去,最简单且最难的事情就是坚持,天天刷一个题保持良好的手感,时间不用长了,一个月你会有很是大的进步区块链

刚开始刷题的时候,基本上一下午只能A过两三道easy的算法题,可是我在每次A过以后,都会在讨论里看看别人的算法,把本身以为叼炸天的算法记录下来,尝试理解别人的算法。这种作法给我带来的最大好处是:加强本身的代码阅读能力,而且开阔了个人思路。测试

先写思路,再写代码

在A题的过程当中,我从没用过IDE编译代码看输出,基本上都是肉眼debug,而后改错。这个方法是我在A题时别人建议的,这样能够锻炼本身的思惟能力,也能够慢慢提升本身写代码的全局观和对异常输出的处理。

一开始刷题时,我都是有一点思路就尝试开始写代码,写着写着发现这种方法不可行,又所有删掉。后来慢慢变成了先在纸上写好完整的思路,甚至包括须要声明几个变量。这样虽然一开始可能以为速度有点慢,但这样会让你在真正写代码时思路清晰,从而少犯错误,而且我以为这种写代码的状态更好。到后来我在写算法的时候甚至不是从上到下的编写,而是先写算法的框架,再写每个部分要完成的功能。自我认为,这是比较好的敲代码的方法,而且能够增长本身纸上代码的能力。

关于测试用例,通常我都是随便试两个,经过了就直接submit,可是这样致使个人AC率很低。后来改为先写思路的时候,我就先想测试用例,并且想一些极端的,并根据 这些测试用例来写代码的一些边界条件和保护条件,这样AC率也会慢慢高了。

最后,必定不要知足本身的算法,尽量写出最简单的代码,即便是相同的思路,也必定要将代码减至没法再减为止。这样能够增长本身的代码质量,长此以往,你对这门语言的掌控能力也会获得提高。

刷题是能够锻炼的,千万不要让算法成为本身的短板。

固然,鱼哥也给你们准备了一份BAT算法题,供你们参考,公号后台,回复“666”,就能够获取~

640?wx_fmt=png


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:


640?wx_fmt=png 真香,朕在看了!