发布于 2026-01-06 6 阅读
0

我的 LeetCode 水平比其他玩家高出 99.9%:提升新手信心的指南

我的 LeetCode 水平比其他玩家高出 99.9%:提升新手信心的指南

我是如何攻克 600 多道 LeetCode 题目的,以下是我的建议。

我想和大家分享一下我的故事,讲述我是如何从“十道题里连一道简单的都解决不了”到“能解决其他中等难度题目”的,以及我如何在 Meta、Booking、Careem、Avito 等公司参加过多次编程培训……

一切始于2022年底,当时我下定决心要加入一家FAANG公司。然而,正如你可能知道的,这需要掌握算法和数据结构方面的知识,而我恰恰缺乏这些知识,因为在日常工作中,你并不需要用到堆、树、不相交集和其他数据结构。所以,我几乎是从零开始。

这对我来说非常具有挑战性,因为我不知道从何入手,如何解决问题,也不知道哪些因素重要,哪些不重要。我还有一些疑问,比如要解决多少问题才能感到自信,以及我是否能够逐步过渡到中等难度的问题。即使是简单的问题也让我感到困惑,下面我会尝试帮助你解决这个问题。

当你想开始做 LeetCode 题目时,首先想到的就是打开题目页面https://leetcode.com/problemset/all/然后按顺序一道道来做。然而,即使你筛选出简单的题目,这也不是个好主意,因为很多标为“简单”的题目其实相当有挑战性。这可能会打击你的积极性,甚至降低你的自信心。

尖端:

  1. 第一条建议——关注通过;通过率越高越好。这表明很多人都能解决这个问题,你也能成功的可能性也就越大。此外,你还可以参考学习计划,尝试解决其中的问题:
    热门100题:一份高人气题目列表。如果一道题点赞数很高,那么它很可能不是那种会降低你评分的复杂题目。
    面试热门150题:一份包含150道面试准备题目的列表。你很可能会在面试中遇到这些题目,但其中一些可能会比较难,尤其是在面试初期。LeetCode
    75题:被誉为“面试准备必做题目列表”。这些题目按不同主题分类;请参考以下建议来解决它们。

  2. 第二个建议——从最基础的数据结构入手,例如数组(一维/二维)、集合哈希表;你会经常遇到它们。例如,在很多问题中,添加集合或哈希表可以提高执行速度(但请记住,这可能会增加内存消耗)。只有在掌握了这些基础数据结构之后,你才应该深入学习其他数据结构,例如队列链表。LeetCode Explore
    提供了一些卡片,解释了数据结构和算法,并附有练习题来巩固这些概念。如前所述,从数组和字符串等简单的卡片开始,逐步增加难度。我反复学习过这些卡片好几次,因为有些概念一开始并不清晰。如果遇到不清楚的地方,不要觉得有什么问题;过段时间再回来,你可能会发现自己已经理解了。 以下是一些其他资源:LeetCode Learn:包含解释和练习题的卡片。NeetCode Roadmap:包含主题和练习题的学习路线图;强烈推荐。Tech Interview Handbook:使用各种筛选条件创建每周学习计划。LeetCode 题型:按主题、难度和公司分类的 150 道热门题目的列表。




  3. 第三条建议——如果你找不到最优解,就先尝试“穷举法”。找到最优解后,思考如何改进它。
    能否使用特定的数据结构?
    数组是否已排序?
    使用集合或哈希表会怎样?
    是否有现成的模板可以应用?
    如果所有方法都无效,而你已经花费了20-40分钟,那就自信地打开答案仔细研究。研究之后,关闭答案,再次尝试解题(这可能需要多次尝试,很正常)。如果多次尝试后仍然无法解决,可以考虑把答案写下来(我这样做过好几次)。但是,别忘了之后再重新审视这个问题,再次尝试解决。你一开始可能并不成功,这很正常。只需重复这些步骤,直到你充满信心为止。

  4. 第四条建议——仔细学习这14种编程模式,尤其要重点关注双指针滑动窗口快慢指针,因为这些模式经常会遇到。选择一个模式,在LeetCode题目页面找到与该模式相关的题目(可以使用“双指针”或“滑动窗口”等标签的筛选器),并练习足够多的题目来巩固你对该主题的理解。

  5. 第五条也是最重要的一条建议——练习、练习、再练习。一开始,我常常因为连简单的题目都解不出来而沮丧得想哭。这绝非夸张。“我真笨”的想法在我脑海里挥之不去,持续了好几个月。即使已经解决了600道题,还是会有自信心受挫的时候,尤其是遇到看似简单的题目却解不出来的时候。重要的是,每解决一道题,你都会比以前进步一些。

现在,解决 LeetCode 问题可以在Firecode平台上进行。该平台会按顺序呈现问题,从简单的题目开始,并回顾之前解决过的题目以巩固知识。平台提供各种主题的解释,并且在解决问题后,您可以查看其他人的解题思路,这对于理解不同的解题策略非常有帮助。

常问问题:

如果我无法解决问题,该怎么办?

如果30-40分钟后仍然无法解决问题,请先查看答案,并尝试寻找该问题的视频解法。在复习并理解之后,再尝试解决同一道题。如果仍然失败,请重复上述步骤。定期回顾以前遇到的问题,尤其是那些比较棘手的问题。我有时甚至会反复解决同一个问题10-15次或更多次。

在申请工作之前,我应该解决多少个问题?

每个人的情况都不一样。我花了六个月的时间,每天做几道题,大概做了300道题,才感觉打下了扎实的基础。而真正建立起信心,是在解决了400到500道题之后。有些人可能只需要解决100到200道题,但很遗憾,我不属于这一类。

哪种编程语言最适合解决问题?

简而言之——Python。我最初学的是PHP,后来转到Go,再后来是Java。看完一个视频后,我尝试了Python,之后就一直用它了。Python简洁的代码、内置函数(例如Counter、defaultdict、divmod、lambda等)以及速度优势在面试中非常实用。

如何抽出时间解决问题?

我的目标是每天解决两道题,一道在上班前,一道在下班后。周末,我会投入更多时间,观看视频、阅读文章、解决更多问题,并复习以前的题目以巩固知识。

LeetCode高级版值得购买吗?

高级版最实用的功能是能查看哪些公司出过特定题目。如果是准备特定公司的考试,建议使用高级版;否则,免费版就足够了。你可以在 Neetcode 等频道找到视频讲解。

购买 eduative.io 的访问权限值得吗?

虽然在 educative 上有很多关于 Grokking Coding Interview Patterns 课程的推荐,但我个人觉得它用处不大。视觉讲解是唯一的优点。在我看来,看 YouTube 视频是更好的选择。

购买 algoexpert.io 的使用权值得吗?

在我看来,algoexpert.io 是一个非常实用的资源。每个问题都配有 30-50 分钟的详细视频讲解。他们经常有促销活动,有时只需 99 美元就能获得一年的所有课程。价格合理,网站界面友好,测试用例丰富,编辑器也十分人性化。

图片描述

结果:

  • 我实现了解决算法问题的最初目标——通过编程面试,这是FAANG公司面试的关键一步。我成功通过了好几轮面试,最重要的是,我不再害怕这个阶段了。
  • 对数据结构的理解更加深入。从一开始不知道堆是什么,到现在我对这种结构以及其他数据结构都有了全面的了解。
  • 工作中改变了我对代码的看法。现在我可以找出哪些地方可以更有效地利用内存或降低时间复杂度。
  • 最后但同样重要的是——大脑健康。从“不想做”转变为“每天都想解决问题”。

实用链接:

俄语版本:https://habr.com/ru/articles/786184/

文章来源:https://dev.to/idsulik/empowering-newbies-building-confidence-through-600-leetcode-solutions-a-guide-for-beginners-3960