互联网技术笔试总通不过?leetcode刷对了么

https://36kr.com/p/5084645git

 

Leetcode,绕都绕不过去的程序员刷题神器

编者按:本文来自逆行求职(ID:nixingjihua)。程序员

对全部求职技术岗位的童鞋来讲,有这么同样东西恐怕作梦都会梦到【Leetcode】,绕都绕不过去的程序员刷题神器。github

“哲学是世界观和方法论的统一,是具体科学知识的归纳与总结。”面试

今天,逆行君就带你从世界观和方法论两方面走进“leetcode”算法

leetcode之世界观

什么是leetcode编程

简单来讲,leetcode是一个美国的在线编程网站,它收集了各大公司的经典算法面试题,用户能够选择不一样的语言进行代码的在线编写、编译和调试。数组

Leetcode目前有450题(依稀记得去年还只有340多道啊),分为三个难度easy、medium、和hard。题目大体分为两类:数据结构

一、基础算法的知识。架构

这些题里面有大量的算法题,解这些题都是有套路的,不是用递归(例如深度优先DFS,广度优先BFS),就是要用动态规划(Dynamic Programming),或是拆半查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的二叉树,数组、链表、字符串和hash表的操做。经过作这些题能让你对这些最基础的算法的思路有很是扎实的了解和训练。app

二、编程题。好比:atoi,strstr,add two num,括号匹配,字符串乘法,通配符匹配,文件路径简化,Text Justification,反转单词等等,这些题的Edge Case,Corner Case有不少。这些题须要你想清楚了再作,只要你稍有疏忽,就会有几个case让你痛不欲生,并且一不当心就会让你的代码会写得又臭又长,没法阅读。经过作这些题,能够很是好的训练你对各类状况的考虑,以及你对程序代码组织的掌控(其实就是其中的状态变量)。

为何必定是leetcode

Leetcode是注重算法的刷题工具,在考算法的笔试面试中,遇见原题的几率可算是很是大:

@飞龙:面试向算法,感受没有比leetcode更合适的训练方法了。短时间刷用处也很大,若是你对代码有感受的话,一些巧妙的解法你看一眼就会忘不了。

@anonymity:参加了一些公司的笔试,看到过leetcode上的原题或近似题。最后,从了某公司的美国总部软件工程师的offer。学生们项目经验少,只能考算法。刷题颇有用。    

@yuquan wang:

会leetcode,不必定能拿offer

不会leetcode,基本拿不了offer.

leetcode之方法论

简而言之,就是,leetcode到底要怎么刷?

刷题的顺序,能够按不一样的难度等级练习,先把easy的题目练完,再进阶medium,最后的hard就量力而为。广度优先的练习会让你快速掌握大部分题型,这样应对突发的面试笔试需求也能够信心十足,不会出现尚未练过的地方。

还不错是否是。

互联网技术笔试总通不过?leetcode刷对了么固然,要是按编号刷题太无聊,你也能够按Tag进行练习,举个例子,好比复习链表的内容,就选Linked List这部分的23个题目,刷完以后能够再总结一下经常使用的方法和数据结构构造方式。Tag分类在网页右边,如图: 互联网技术笔试总通不过?leetcode刷对了么

不过按Tag来刷,也可能会在惯性思惟下,去想关于Tag的算法。好比138. Copy List with Random Pointer(深拷贝链表),Tag:Hash Table。尽管是一个hard的题目,可是已经提示hash表,怎么样都会想到创建映射关系(并且目前最好的解法并非使用的hash table)。

最后提供一种综合性思路,也就是在各个Tag分类里按不一样的难度刷题,这样就既有广度也有深度了。

咱们还想给你一些小技巧

01 善用Github

很多人都会一边作Leetcode的题目一边在Github上repo,这样不只对本身的解题思路有所记录,还能方便查找。很多刷Leetcode的高手,他们的答案也是写在本身的Github上,你也能够经过Github成功找到他们。

02 善用Leetcode的讨论区

同一道题的解法每每不止一种,甚至思路和方式都会彻底不一样,例如这位同窗所说:“边刷边感叹天外有天,好比有道很简单的一个int array只有一个数只出现了一次,其余数都是出现了两次,找出只出现一次的数。看到讨论区的答案是把全部element XOR起来,顿时膜拜” 因此通常很简单的题,也有必要看看讨论区的优秀答案,毕竟提高本身的算法水平才是正义目标啊。

重点,90%同窗都不知道的讨论区在的正确打开方式:

从每道题目下方的Discuss按钮里点进去,才是每道题对应的讨论!

互联网技术笔试总通不过?leetcode刷对了么

03 徒手写代码的能

不少同窗在Leetcode上编得风生水起,但在笔试面试中遇到面试官拿出一张A4白纸,可能就懵逼了,改改涂涂半天写不完整。这个时候徒手写代码的能力就尤其突出了,不管你是先手写完代码再敲到网页上,仍是代码AC(经过)后再默写一遍,徒手代码能力都是值得训练的,这也是你的总体思惟和架构能力的体现。

04 善用碎片时间

有不少同窗因为实习或者其余缘由没有办法拿出大段时间来刷leetcode,这里为实习/工做/研究僧提供一个“一天一题时间表”:

一、早上起来出门前,迅速看一道题。

2.在拥挤的交通工具上,超脱本身,“冥想”题目。

3. 题目so easy,手机提交。

4. 短时不能通关?那就一直放在脑子里面想,到了公司/实验室,基本答案就能够动动手写在电脑上了。

5. 如前文所说,将思路和解决方案放到github上。

6. 晚上睡觉前,反思一下是否是最优解法,有时间的话看看discuss,没时间,把本身的解法理顺了,涉及的知识点再过一遍脑子。

05  菜鸟小白专用技巧栏目

对于基础不扎实的菜鸟选手,逆行君并不推荐按照前面提示的难度/tag进行刷题操做,有可能受思惟暗示的影响不说,效率也会比较低下。

第一次刷,首先攻克array,string,tree,linkedlist,math这五个tag,好处在于能够迅速的在规避思惟暗示的同时,迅速巩固数据结构的知识,或许还能掌握某种数据结构的小技巧。

每一个tag内部就按照easy-medium-hard的顺序作,这样最开始一天刷10道easy,后面熟了这个数据结构一天也能刷5道难题,不会在初期被挫的刷不下去,培养一种刷题的“爽”感。

这个顺序完成以后,你已经完成了25%以上的进度条了,以后翻转顺序,从hard向easy进行刷题,开始会有点小虐,但后面就会效率奇高。刷完第一遍以后,就能够愉快的进行全tag刷题round 2了~

免费题解在这里

为了保证你们的刷题心情,大部分的题目的答案整理及分析,咱们都给准备好了,画风是这样:

互联网技术笔试总通不过?leetcode刷对了么

更多题解能够关注逆行求职(id:nixingjihua),回复leetcode得到。

相关文章
相关标签/搜索