专栏名称: 算法与数据结构
算法与数据结构知识、资源分享
51好读  ›  专栏  ›  算法与数据结构

1小时刷完 LeetCode链表题,获取企业面试密钥

算法与数据结构  · 公众号  · 算法  · 2017-08-22 09:00

正文


Google某前员工Lucida在文章《白板编程访谈——Why,What,How》当中这样写道:


程序员可以被分为两种:


1.先确认前条件/不变式/终止条件/边界条件,然后写出正确的代码

2.先编写代码,然后通过各种用例/测试/调试对程序进行调整,最后得到似乎正确的代码


保守估计前者的开发效率至少是后者的10倍,因为前者不需要浪费大量时间在 编码-调试-编码 这个极其耗时的循环上。通过白板编程,可以有效的判定出面试者属于前者还是后者,从而招进合适的人才,并把老油条或是嘴遁者排除在外。



从硅谷名企Facebook、LinkedIn、Amazon、Google到国内的阿里、腾讯、百度……各大IT公司都在用白板编程题目来考核程序员的开发效率和编程思路。



每个程序员都应该耍一番LeetCode


LeetCode网罗了海内外名企白板编程题,成为最大的程序员面试题目OJ(Online Judge)平台,相对其他OJ平台,它的优势十分明显:


  • 题目全部来自名企真实面试

  • 不用处理输入输出,精力全放在解决具体问题上

  • 讨论中切磋不同解题思路

  • 了解自己代码的运行效率水平,实时排名

  • 支持多种主流语言:C/C++,Python, Java

  • 在线测试,随时调试





通过刷LeetCode来掌握编程技能,已成为程序员 获取企业密钥 的不二法门,除企业面试的原因之外,还有一些理由让程序员愿意与LeetCode纠缠一生:


CS(Computer Science)初学者:

  • 可以初步的了解一个问题 从算法到实现的完整过程 ,实践上的复杂与细节,以及数据结构和算法的强大之处。


普通程序员:

  • 锻炼 脱离IDE白板写代码 的能力,更多考虑边界问题、时间空间复杂度

  • 随着LeetCode题库的不断扩充,加深对CS中 经典数据结构 的深刻理解

  • 不断简洁你的代码, 在复杂度与可读性中做到最优和平衡

  • 培养 解决问题的思维能力, 如何去思考本身也是一个需要不断学习和练习的技能


资深的程序高手:

  • 维持一种编程状态

  • 缓解压力,清空罪槽,增强血活力


那么想要成为或已经是程序员的你,刷过LeetCode了么?又是怎样刷题的呢?



打开LeetCode高效刷题姿势


LeetCode目前已收录600+面试题,据不完全统计,一名普通程序员正常情况下刷完全部题目需要3-4个月,他们讲述了自己的刷题方式和感受:


第一遍为逆向背诵,消耗时间还不上道;

第二遍思路开始清晰,但并未参透其中奥妙;

于是有了第三、四、五遍……

最后终于提交了正确答案,却只beat百分之几的人,

跑去论坛发现别人用你1/4的代码就解决了,

这不是刷题次数还太少,也不是编程基本功不扎实,

而是解题思路不够直接。




明有科举八股,今有LeetCode

八股定格式却取文采心意

LeetCode定题目但重思维逻辑

刷题是漫长的路,但不是题海战术

刷题的核心是要有策略、能总结



据众多以刷题为日常的LeetCoder的经验分享,我们归纳出三大高效刷题姿势:

1.分







请到「今天看啥」查看全文