刷了一个半月算法题,我薪资终于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


推荐阅读:

  • 太形象了!什么是边缘计算?最有趣的解释没有之一!

  • 互联网出海十年

  • 华为员工年薪 200 万!真相让人心酸!

  • 天才程序员:25 岁进贝尔实验室,32 岁创建信息论  琥珀  极客宝宝  5天前

  • 安全顾问反水成黑客, 靠瞎猜盗得5000万美元的以太币, 一个区块链大盗的另类传奇

  • 人造器官新突破!美国科学家3D打印出会“呼吸”的肺 | Science


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史&#…

mac上用qt调用自己生成的qt动态库,该动态库又依赖第三方库

qt下依赖于第三方库生成的动态库的调用概述基于声网的sdk如何在自己的动态库中使用使用基于第三方库的动态库下面看pro文件中的设置概述 初次使用mac上的qtCreator生成动态库,该动态库编写时调用了第三方库,基于生成的该动态库,编写测试程序…

版本回退

现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: i am gblfy i am yuxin然后,【工作区】-【暂存区】-【本地仓库】尝试提交: 修改…

Docker精华问答 | 数据库为什么不适合放在 Docker 中运行?

戳蓝字“CSDN云计算”关注我们哦!Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。今天就让我们一起看看关于Docker …

Mac下使用macdeployqt打包qt程序:

概述 初次在Mac上使用qt的macdeployqt来打包生成的可执行程序,这里记录下。由于我的程序是调用之前生成的qt动态库,而动态库又依赖于第三方库,相对于没有库文件依赖的程序,这里有一些需要注意的点,下面是打包的步骤。…

路透社:谷歌已停止与华为部分合作;联想否认断供华为PC;微软计划直供Linux内核;谷歌无人机快递Wing进军芬兰……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 阿里巴巴联合欧莱雅发布移动…

管理修改

现在,假定你已经完全掌握了暂存区的概念。下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。 你会问,什么是修改? 比如你新增了一行&#x…

npm install安装依赖报错——常见报错解决方案

小伙伴在开发前端项目过程中,执行npm install安装项目依赖时,往往会遇到各种各样的报错,接下来建仔给大家总结一下几种常见报错解决方案! 第一种报错:无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 报错详…

AWS CEO Andy Jassy 专访:我们一直思考的是未来 2-5 年的事 | 人物志

戳蓝字“CSDN云计算”关注我们哦!人物志:观云、盘点、对话英雄。以云计算风云人物为核心,聚焦个人成长、技术创新、产业发展,还原真实与鲜活!本文来源:Siliconangle《Exclusive interview: How CEO Andy Ja…

撤销修改

自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: Im writing a report.在你准备提交前,一杯咖啡起了作用,你猛然发现了stupid boss可能会让你丢掉这个月的奖金…

QtCreator下使用c++标准输入cin输出cout没有阻塞等待输入

引言 在QtCreator中编写c程序,其中需要从控制台输入,就用了c的cout和cin,本应该等待控制台输入文本,但是却没有。下面是具体的案例。 案例 本文基于QtCreator创建的qt控制台输出程序,创建时选择如下图所示的选项&am…

Docker 系列学习文章 | 什么是容器云?

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者:宝哥devops运维转自:云加社区腾小云导读:容器…

删除文件

在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交: echo "test del file" >> test.txt git add test.txt git commit -m "add del test.txt"一般情况下,…

mvc设计模式的简单领悟

引言 mvc设计模式,是将数据模型与视图分离,通过控制器来建立起数据模型与视图之间的联系,当数据模型变化自动更新视图。其中M-数据模型,V-视图,C-控制器。下面是一个简单的对于MVC设计模式的使用。 示例 开发环境是…

添加远程库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得…

微服务精华问答 | 什么是金丝雀释放?

戳蓝字“CSDN云计算”关注我们哦!微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。今天,就让我们来看看关于微服务更加有深度的问题吧。1Q:什么是金丝雀释放?A:Canary Rele…

Git 远程配置

Git 配置篇02_远程配置 git 远程配置 2种方案 码云 Github 案例演示 码云 Github更改用户名和邮箱即可 任选1种 第1步:生成SSH key 输入下边命令一直回车(4次回车) ## 码云配置方案: ssh-keygen -t rsa -C "13396492261163…

虚拟器件—虚拟化技术的新利刃 | 时光机

戳蓝字“CSDN云计算”关注我们哦!时光机:搭载这部时光机,带您回顾《程序员》大量优秀文章,重温经典技术干货,我们发现硬核技术永不过时,对于get要点、solve难题、提高自我,仍有非凡意义。作者&a…

git从远程库克隆

首先,登陆GitHub,找到我们的learngit项目 第一种方式(老手建议):通过命令将远程仓库的代码,拉取到本地,文件夹形式。 第二种方式(入门建议):将远程的项目代码下载到本地,压缩包形式。 复制…

图解分布式架构的发展和演进 | 技术干货

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!编注: 架构决定的系统的稳定性,扩展性和并发性,架构的演进是从…