如果你是一个想找到一份高薪的软件工程工作的人,但是,却不知道如何有效地使用Leetcode,赞一个,你来对地方了
当我第一次开始准备的时候,我完全不知道从哪里开始!所以,我明白你的感受。
外面有大量的资源,但我们最终还是会问,如何有效地使用Leetcode/CodeChef/geeksforgeeks,等等。
说实话,我一开始就没有发现Leetcode,而是在其他编程平台上徘徊,这些平台并不适合我。然而,一旦我发现Leetcode,就没有回头路了。这成为我的伙伴,帮助我获得了高盛、D.E Shaw、微软和Innovaccer的多个offer。
我很高兴,在经历了大量的尝试和试验之后,我终于发现了一些我在任何博客或YouTube视频上都找不到的秘密。是的,今天,你会在这里找到这些东西!
所以,在不进一步延伸的情况下,这里是这个博客的流程:
• 我应该按topic-wise(tag-wise)做题还是随机做题?
• 我应该解决多少个问题才能有效地使用Leetcode?
• 使用这4个步骤的方法,以获得最佳的Leetcode结果!
• 参加比赛
• Leetcode学习计划
• 有效使用Letcode的额外提示
• 最后的想法
我应该按topic-wise(tag-wise)做题还是随机做题?
做题时最好不要在意标签或主题,因为当你事先知道主题时,你的思维会朝一个方向发展。例如,如果你看到一个DP问题,你就会把你的想法和方法限制在DP上,尽管你可以尝试其他的东西。这就是为什么总是建议随机挑选问题,而不管其标签如何,以有效地使用Leetcode。
但是,我开始的时候并不完全是这样进行的。所以,当我开始的时候,除了基础知识,我对任何数据结构或算法都没有概念。而如果没有很好地掌握所有的概念,你就无法解决随意丢给你的问题。因此,我更倾向于首先采用 topic-wise的方法
简而言之,如果你是一个概念不清的新手,首先要计划做topic-wise的问题。在每个题目上投入一些预先确定的时间,并完成所有重要的概念。一旦完成了这些,你就会觉得很有信心,开始从Leetcode的 "Pick One "功能中随机挑选问题,并进行头脑风暴解决。
我应该解决多少个问题才能有效地使用Leetcode?
到目前为止,这是我从准备技术面试的学生那里收到的最频繁的询问。而这个问题的简单答案是任何能让你感到自信的数字。它可以是100,200,300,甚至1000! 在一天结束时,最重要的是,你要在面试中取得优异成绩。
但是,它必须是任何数量的问题,甚至多达1000个问题吗?嗯......可能不是!
事情是这样的:在开始你的编程之旅后,如果你决定在你感到完全准备好的那一天停止,你可能永远都不会停止!所以,你只需要设计出你所需要的问题,并将这些问题的答案告诉你。所以,你只需要设计一个策略,帮助你只解决好的和重要的问题,并节省你的时间,解决不必要的问题。
其中的几个策略可以是:
• 从最简单的开始到最难的。一旦你开始对你目前的问题水平感到舒服,你就可以进入下一个难度级别。
• 从那些Leetcode已经提供了解决方案的问题开始。这些通常是最受欢迎的问题,所以,你根本不能错过它们!
• 从那些有良好评价的问题开始。虽然LeetCode是一个相当不错的平台,但不是每个问题都能成为最好的。如果你打开一个问题,你可以看到有多少人喜欢或不喜欢一个问题。我建议最初远离那些喜欢和不喜欢的比例低于2:1的问题,而4:1或以上的问题通常具有相当高的质量。
使用这4个步骤的方法,以获得最佳的Leetcode结果!
你知道如何启动,很好! 你知道如何选择正确的问题,甚至更好。但这还能保证你的成功吗?根据我迄今为止的观察,有许多人解决了100多道Leetcode问题,但最终仍然难以通过面试,因为他们在练习时没有遵循最重要的4个步骤。那这4个步骤是什么呢?
• 正确阅读问题。
这可能看起来很明显。但它对你从问题中学习的能力起着非常关键的作用。当你阅读问题时,标记出你认为可能很重要的问题的某些方面。记下他们可能暗示的数据结构/算法。
• 处理问题
你应该花20-30分钟来思考解决方案的方法,并将其编码。如果你想不出任何方法,在最多30分钟后,你应该看看你的第一条线索,然后进行头脑风暴。如果在接下来的10分钟内,你还是不能想出办法,那就再找第二个线索,再思考5分钟(因为现在你应该已经能想出解决办法了)。最后,如果还是不行,就直接去找解决方案,把重点放在你想不出来的地方,在那道题上做个记号,以后再来修改!
• 审查解决方案
这一步也是极为关键的。还记得你在步骤1中所做的所有思考吗?这就是它发挥作用的地方。看一下解决方案。他们使用了什么样的数据结构。是否有一个特定的算法被你错过了?是否有什么东西可以暗示他们使用的步骤?在哪些地方,解决方案与你心中的想法有分歧?这种对比性学习应该是你的目标。它将帮助你了解你所遗漏的领域。
• 替代解决方案
这是大多数人忽视的一步。你得到了一个被接受的解决方案,而且这个解决方案对你来说似乎很不错,太好了!你还需要什么?还需要什么呢?然而,你没有意识到,这才是造成整个差异的原因。即使你有了最佳的解决方案,我建议用一些时间来探索其他的替代解决方案。我们能否减少空间的使用(即使时间复杂度上升)?我们能不能使用其他的数据结构/数据帧以另一种方式构建问题?我们还可以用什么其他方式来解决?
参加比赛
竞赛是评估自己的一个非常好的方法。它有所有的新问题,你应该在规定的时间内解决这些问题,这让你为真正的编码面试做好准备。所以,请确保你永远不要错过比赛!
Leetcode每周日和每隔一个星期六都会组织一次竞赛。所以,显然,这不是一个大的时间投资。你可以轻松地管理2-3小时/周的这些比赛。然而,我建议你,如果你真的想获得高薪的工作,就应该更频繁地尝试比赛。为此,你应该考虑Leetcode的 "虚拟竞赛 "功能,你可以保持每隔一天或每两天的竞赛频率。
Leetcode学习计划
好吧,我已经与你分享了你如何开始解决问题topic-wise,后来,切换到随机挑选任何一个问题。但是,你不能忽视Leetcode策划的最有名的问题清单,它也帮助了我。
现在,你的脑子里可能会冒出一个问题:"挑选任何列表并解决其中的所有问题不是很简单吗?" 不需要花时间去想这个问题是否值得尝试,因为无论如何,这些列表都是经过精心策划的!我的建议是:不要去想这些问题,因为这些问题都是由Leetcode提供的。
我的建议是:当你刚开始的时候,不要去选择任何清单。遵循我之前与你分享的选择好问题的策略,不断打磨你的概念。然后,就在面试前,也许是1-2个月前,查看Leetcode探索部分的 "顶级面试问题 "清单,并尽可能多地完成。这的确是一份对面试非常有用的清单。
你也可以考虑按照Leetcode本身提供的学习计划,但为什么我一开始不推荐这些清单,因为你接触到的种类会比较少。然而,你绝对可以用它们来在面试前刷题。
显然,除了一些建议,我没有具体的学习计划可以给你。剩下的就是你的工作了,要计划好你的学习时间表,所以不要在这上面偷懒!
有效使用Leetcode的额外提示
找出一个和你一样有动力的朋友如何?然后,你们俩可以一起制定一个计划,像小竞赛一样解决问题,看谁解决的多! 你也可以在Pramp或Interviewbit等平台上计划模拟面试,并对对方的优势和劣势进行评价。
现在,如果你有一个朋友,这很好,但如果你没有朋友,你可能想试试这个小技巧,我也曾试过。我过去经常在Leetcode Discuss上发布我所解决的问题的解决方案,渐渐地人们开始注意到我。许多人在LinkedIn上与我联系,邀请我成为他们的编程伙伴。最后,我遇到了这样一个人,我和他一起解决了很多问题,做了模拟面试,建立了项目,也分享了Leetcode的好处😛。
最后的思考
我已经详细分享了你要找的所有答案,你根本不需要去别的地方。但我有一个建议:只要开始就好了!在开始之前就不要再寻找答案了,因为一旦你进入游戏,你就会找到出路。在开始之前就不要再寻找答案了,因为一旦你进入游戏,你最终会找到你的出路的。
祝您好运,编码愉快! ❤