【和字节面试官一起聊】如何刷leetcode(1)

最近面试,我发现有些基础知识答的很好的同学,但是做算法题非常非常吃力。有时候我把答题思路都讲了,但是作答也非常不顺利。我有点费解的问有没有刷leetcode,同学说刷了100道左右题目。在我看来,其实100道题已经不少了,所以我觉得应该说一下拿了leetcode怎么练习。

刷leetcode的目标应该有几个阶梯的

  1. 在面试的情况下不要太紧张,可以比较顺利的给出一个解

  2. 进一步是把常见的算法套路都有所了解,可以再有限时间实现一个有套路的题目,比如特定的时间复杂度,或者空间复杂度,或者是一个难度升级的题目

  3. 再进一步可能是追求special offer,想要秒杀面试官那种

根据自己的水平选择不同的目标可能才是每个同学应该去选择的

这里重点说一下,怎么样达到第一个目标,下周再讲一下如何达到第二个目标,并且也会推荐一些资料

第一阶段

第一个阶段的阶段的要求有这些:

  1. 对于leetcode上简单的题目基本上都有合理的(未必最优的)思路

  2. 对于任何有思路(未必是最优解)的题目,可以正确的实现代码

  3. 代码优雅简单

如何取得正确的思路

这个是针对即使面对简单的题目,也有相当一部分是拿不出思路的。这和聪明不聪明完全没有关系,这说明需要更多的算法锻炼。有一些方法可以帮助:

  1. 多画画图,不要着急写代码,先在图上想清楚,画出每一步要做什么,看看是不是有漏洞,或者有什么启发

  2. 从简单的开始,比如一个数组,那就从一个数开始考虑;无序的数组,先考虑一下有序的是不是有什么启发;情况复杂,不确定东西多,是不是分成几类,每一类都只有一个或者两个不确定的变量;有了启发再去推广

  3. 如果想了5-10分钟,都没有收获,还是看看答案吧,可能只是因为你见识的太少了

如何把思路变成代码

这个就是要靠练习了,不过这种练习也要多个心眼才能效率高。其实思路改成代码的时候是有很多重复的基础动作的,比如遍历,从某个数组里选最大值,把链表反转等等,仔细留心自己每次哪一块实现不出自己的想法,那就多去练习一下这块的操作,自然很快就能提高。其实写代码就好像是翻译,把思路用另外一种语言写出来而已。其中当然有很多固定搭配和短语了,多留心总结就提高的快

如何做到代码优雅

过了上面一个阶段,就会发现,正确实现往往很简单,但是实现出来的也是一堆的if else,或者看起来就笨笨的。这时候就要参考答案。比较一下。自己写的啰嗦,可能很大程度是思维的抽象度不够,这个就需要多练习。别死记硬背别人的解法,而是看看他简洁的代码到底在表达什么意思?而自己啰嗦的代码可能是使用了重复的逻辑。这个只能靠多练,多感悟了。

如果能用优雅简单的代码写出答案,即使算法不是最优解,也会大大赢得面试官的好感。而且有了这个基本功,剩下的学习就会事半功倍。并且万一面试的时候没想到思路,面试官提示一下,也是分分钟搞定,必然面试官感到你基本功扎实,代码能力好

下一次再介绍如何达到目标2

To Be Continued!

关注公众号获取更多面经

海量HC等你哦

字节跳动校招内推码
NNQVZ4E


#字节跳动##leetcode#
全部评论
顶起!
点赞 回复
分享
发布于 2020-03-26 08:16
顶帖~
点赞 回复
分享
发布于 2020-04-01 11:45
博乐游戏
校招火热招聘中
官网直投
顶!
点赞 回复
分享
发布于 2020-04-03 21:03

相关推荐

头像
点赞 评论 收藏
转发
12 32 评论
分享
牛客网
牛客企业服务