前言
随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据结构也考核编程能力的题目。刷题的网址非常的多,其中以leetcode是最为出名的。

在刷题上,我花了大量的时间,蹚了许多的坑,总结了一下,主要有这三个问题:

  1. 刷过的题老是忘,第二次刷的时候还是不会做
  2. 刷题的速度很慢,即使花一天时间,也常常只能刷五六道
  3. 坚持不下来,老是刷到一半就停滞下来了,当我第二次再来刷的时候,前面刷过的题都又忘的差不多

说出来都是泪,感觉刷题这个路是真的难走,花了很多时间,但是感觉没有什么收获。所以最近我一直在反思自己刷题的方法,希望能够提高刷题的效率和速度。当我总结了以下方法以后,我很明显的感受到自己的刷题速度从以前周末的一天五六道提升到周末一天刷十五六道以上,速度相比以前提升的非常明显。

一. 我们来谈谈为什么要刷题

  1. 面试需要。Google以及今日头条等公司面试的时候,非常看重基本的算法题目,leetcode 刷的不好第一面都过不了
  2. 刷题能够提高自信。实际工作当中的代码论算法复杂度远远低于刷题的难度,这么难的题我都刷过了,何况工作的代码, 当然工作当中一般也用不到这些我们刷题的方法
  3. 大部分同学刷题能力需要提高。在面试同学算法题的时候,三道算法题能够写出一道的也不是很多

二. 如何快速刷题
由于我本人目前只刷了400道左右的题目,很有可能有更好的方法,欢迎大家赐教

  1. 确立计划。比如在准备找工作的时候,明确就要60天刷leetcode 前400题,平均一周就要刷75题,可以周末两天刷50题,周一到周五 每天刷5题,将问题分解下来,每天一定要完成任务才能睡觉
  2. 分解计划。由于需要一周刷75题,提前规划将本周需要刷的75题,整理成excel,刷完一题标记一下,一周完毕以后,可以看到满满标记的excel 非常的有成就感
  3. 快速刷题。初期一天刷五题其实也是很高的负担,一般来说刚刷题,一题都至少要半个小时,一天五道的话,可能至少也要两个半小时。所以我们在刷题的时候,为了节约时间,五分钟没有思路,就别浪费时间了,直接看答案. 另外一个原因,面试的时候,也不可能让你思考很久。要明确认知,这个和高考刷题没什么区别,理解不了,先背下来。
  4. 组队刷题。大家一起刷题,可以明显的督促自己坚持下来,刷题这个本来就是坚持的过程。

三. 如何避免遗忘

  1. 及时重复。由于我们刷完题以后,遗忘曲线会遵从一个先快后慢的过程,所以要及时重复刷过的题,这个需要提前规划刷的75题,我们会之后再讲如何规划每周的75题
  2. 与人分享。当我们刷完题以后,如果能讲给别人听的话,会大大加深我们的映像,在讲给别人听的时候,如果你能讲的很明白,说明你是彻底理解了,但是如果听的人始终没有听明白,那很有可能就是自己没有理解这个题目,需要自己再回去思考一下这个题目的解法。

四. 如何提高面试环节当中刷题的表现

  1. 养成bug free 的习惯。写完代码以后, 一定要仔细检查,保证没有思路问题,没有下标越界问题,考虑各种边界情况,没有变量命名不一致等问题
  2. 掌握多种解法。算法题面试,做出来是一方面, 如果能够在这个题目上掌握不同时间复杂度的解法,然后再呈现给面试官,面试官自然会更加满意的。假设一个同学在面试的时候,先写时间复杂度和空间复杂度最高的方法,面试官很有可能会问你这个题目有更优的解法吗,你再写时间复杂度和空间复杂度稍低一点的解法,如果面试官继续问你能不能更优化一点,你再写出时间复杂度和空间复杂度最优的方案,面试官会认为你的思考是有深度的,如果一开始就写出时间复杂度和空间复杂度最优的方法,面试官只是会觉得这个题目你以前做过而已。

五.结束语

  1. 刷题最重要的是速度和效率。短时间内高质量快速刷完才是最终目的,明确自己的认知,不要和题目死磕。
  2. 坚持下来。如果一个事情方向是正确的时候,即使一时遇到挫折了,也不要气馁,多总结方法,持续提高。刷题这件事情给我的挫败感是非常高的,中间是一度放弃了很久,但是当我想明白这道坎是一定要过的时候,就下定了决心一定要攻克这道难关,持续总结方法,持续进步。最后欢迎关注我的个人公众号:ModifyAI

如何两个月刷400道leetcode的更多相关文章

  1. 看完互联网大佬的「LeetCode 刷题手册」, 手撕了 400 道 Leetcode 算法题

    大家好,我是 程序员小熊 ,来自 大厂 的程序猿.相信绝大部分程序猿都有一个进大厂的梦想,但相较于以前,目前大厂的面试,只要是研发相关岗位,算法题基本少不了,所以现在很多人都会去刷 Leetcode ...

  2. 刷14道leetcode的总结

    引子 为什么我要刷leetcode?换工作?不是!那是?玩!巴菲特的双目标清单系统,基本方法是列两个清单,一个是职业生涯最重要的目标(不超过5个),另一个是比较重要的目标.对于比较重要的目标,要像躲避 ...

  3. 为什么说每个程序员都应该刷几道LeetCode?

    2015年即将过去,最近在回顾和总结过去一年的工作经历,发现自己并不能算是一名合格的程序员. Google某前员工Lucida在文章<白板编程访谈——Why,What,How>当中写道: ...

  4. 两个月刷完Leetcode前400题经验总结

    更新:气死了,挂个傻逼: 每次做个分享.组织个活动,就会有一些傻逼冒泡生怕别人不知道他是傻逼,气死我了!自己好好看看非法集资的概念,我办这个活动,一分钱都没收,入群99元是督促大家完成刷题任务,最后完 ...

  5. 两个月淘宝刷单,连续死N次血泪史 (转)

    两个月淘宝刷单,连续死N次血泪史 派代网 2014/10/13 刷单 分享到:3 [思路网注] 看来是靠刷流量刷销量是行不通了,点击率与展现无法匹配,这是致命的!!那么,贵就贵点,直通车来吧!!再删宝 ...

  6. C语言超级经典400道题目

    C语言超级经典400道题目 1.C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符.C.1 2.C语言程序的三种基本结构是____构A.顺序结构,选择结构,循环结 B.递 ...

  7. 裸辞两个月,海投一个月,从Android转战Web前端的求职之路

    前言 看到这个标题的童鞋,可能会产生两种想法: 想法一:这篇文章是标题党 想法二:Android开发越来越不景气了吗?前端越来越火了吗? 我一向不喜欢标题党,标题中的内容是我的亲身经历.我是2016年 ...

  8. 怎样两个月完成Udacity Data Analyst Nanodegree

    在迷恋数据科学很久后,我决定要在MOOC网站上拿到一份Data Science的证书.美国三个MOOC网站,Udacity上的课程已经被分成了数个nanodegree,每个nanodegree都是目前 ...

  9. Mysql将近两个月的记录合并为一行显示

    最近做报表统计,用到要求把近两个月的绩效作比较,并作出一些环比数据等. 场景:将1班同学的两个月的语文的平均成绩合并到一行比较. CREATE TABLE `Chinese_score` ( `id` ...

随机推荐

  1. Laravel 5.2 中多用户认证实现(前台和后台登录)

    Laravel 5.2中多用户认证支持,即同时允许不同数据表用户(如前台用户.后台用户.app用户等)登录认证.下面我们就来简单介绍多用户登录及注册功能实现. 1.生成认证脚手架 首先我们使用Lara ...

  2. git建tag备忘

    1.git tag -a v1.1.8_20180613 -m '实时上传位置等功能提交测试' 2. git push origin v1.1.8_20180613

  3. asp .net 页面跳转

    ajax异步 通过ajax去请求数据,然后在js里面得到返回结果,赋值location.href <div> <input id="url" /> < ...

  4. NPM镜像设置方法!

    使用npm安装一些包失败了的看过来(npm国内镜像介绍) 发布于 2012-4-26 04:19 最后一次编辑是 2013-12-11 23:21 这个也是网上搜的,亲自试过,非常好用! 镜像使用方法 ...

  5. WPF RelativeSource的使用

    <Window x:Class="XamlTest.Window15"        xmlns="http://schemas.microsoft.com/win ...

  6. WCF学习目录

    WCF 基本 WCF概念 WCF配置文件详解 多个不同类对象传输思路 WCF 大文件传输配置 Uri ? & = 毫秒数据字符串转换为DateTime POST请求——HttpWebReque ...

  7. WCF的几个注意事项

    wcf托管服务注意的问题 加上项目分为客户端-WCF服务-逻辑层-数据库三层wcf一直出现异常,说没有初始化啊之类的,如果你的逻辑代码确定没有问题的话,思考是不是wcf的配置文件(app.config ...

  8. C#基于用户和角色的验证,服务端web 客户端wpf

    应用程序服务 <?xml version="1.0"?> <!--  For more information on how to configure your ...

  9. 零元学Expression Blend 4 - Chapter 32 简单轻松的学会如何使用Visual States(上)

    原文:零元学Expression Blend 4 - Chapter 32 简单轻松的学会如何使用Visual States(上) Visual State Manager中文翻译为视觉状态管理器,这 ...

  10. TIFF图片简介

    每个TIFF文件都是从指示字节顺序的两个字节开始的.“II”表示小字节在先.“MM”表示大字节在先字节顺序.后面的两个字节表示数字42.数字42是“为了其深刻的哲学意义"而选择的. 42的读 ...