>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
JavaScript

如何停止盲目刷几千道 LeetCode 题并将算法归纳为 30 个模式

听起来很熟悉:你打开 LeetCode,看到三千道题的列表,连着做了五道,然后意识到脑子里一团浆糊。一周后你坐下来面对一道类似的题目,又不知道从哪下手。大多数人试图通过死记硬背具体解法来攻克算法面试。但死记硬背在面试官第一次换种问法时就会崩溃。

最近我发现了一个名为 Babua DSA Patterns 的开源课程,托管在 team-codebug 仓库中。项目作者是一位名为 CTO Bhaiya 的开发者(本名 Anuj Kumar,曾在 Adobe 和 Intuit 工作),他提出了一个不同的方法。他没有让学习者杂乱无章地刷几百道题,而是将整个备考过程组织成 90 天,围绕 30 个核心模式展开。

模式化方法的核心

一旦你开始大量刷题,你会发现一个现象:十道面试题中有九道都可以归结为有限的几类技巧。

例如,如果你需要在数组中查找满足特定条件的子串或元素对,几乎肯定需要双指针或滑动窗口。一旦你理解了某个模式的机制,题目具体的表述就不再那么可怕了。你不再寻找独特的解法,而是简单地套用一个熟悉的代码骨架。

在这个仓库中,作者正是构建了这样一套坐标系:

  • 每个模式都从直觉角度讲解,而非枯燥的理论
  • 每个模板都配有 15–20 道难度递进的练习题
  • 提供了现成的笔记和边界情况分析指南
  • 包含间隔重复表格

仓库与学习计划的组织方式

这个仓库作为 90 天挑战的互动追踪器。学习过程本身按天划分,每天要么是探索新概念,要么是练习已学主题的题目。

目录结构非常清晰:每一天都有对应的文件夹(0_Day1_Day2_Day,以此类推),里面包含笔记、代码讲解和视频链接。

作者为每个主题都配有可视化图表:

DSA Questions Map

涵盖的模式包括基础和高级主题:

  • 双指针(数组和字符串的经典双指针)
  • 快慢指针(链表和循环结构中的龟兔赛跑技巧)
  • 滑动窗口(固定和可变大小的滑动窗口)
  • 原地链表反转
  • 基于堆的 K 元素查找
  • 变体二分查找

示例:从思路到双指针模板

为了理解这种逻辑是如何构建的,我们以双指针模式为例。许多数组问题可以用嵌套循环直接解决,时间复杂度为 O(n²)。而使用相向或同向移动的指针,可以将复杂度降低到 O(n)。

以下是这种方法的 Java 代码骨架:

public int[] twoSumSorted(int[] numbers, int target) {
    int left = 0;
    int right = numbers.length - 1;

    while (left < right) {
        int currentSum = numbers[left] + numbers[right];

        if (currentSum == target) {
            return new int[] { left + 1, right + 1 };
        } else if (currentSum < target) {
            left++; // сдвигаем левый указатель вправо, увеличивая сумму
        } else {
            right--; // сдвигаем правый указатель влево, уменьшая сумму
        }
    }

    return new int[] {};
}

在课程中,作者展示了如何用最小的修改将同一个模板应用于回文判断、三数之和问题,或寻找装水最多容器等题型。你不需要在脑中记忆五种不同的解法,只需掌握一个模式和指针移动的规则。

间隔重复与进度追踪

备考面试时最常见的问题之一就是遗忘。你可能在三月搞懂了线段树,到五月时遍历细节就完全从记忆中抹去了。

为此项目中有一个单独的复习表(Revision Sheet)。作者建议采用四次规则来复习每个主题,逐步拉长间隔。为了追踪进度,建议 fork 这个仓库并在你的个人主页中标记已完成的日期。

DSA Progress Recap

美中不足:值得了解的细节

在投入 90 天马拉松式学习之前,请注意资料的呈现形式:

  1. YouTube 视频课程的主要语言是印地语和英语的混合(Hinglish)。如果你只能接受纯俄语或学术英语的信息,观看这些视频会有些吃力。
  2. 仓库中的代码库和文本笔记是用 Java 和英语编写的,所以即使没有视频,你也可以毫无问题地阅读笔记。
  3. 项目侧重于实际的面试效果,因此没有深入的渐近复杂度学术证明。

这个仓库适合谁

如果你正在准备跳槽、计划去大厂参加技术面试,或者只是想整理自己的算法知识体系,babua-dsa-patterns-course 仓库是一个非常不错的框架选择。

你不必逐日严格按照 90 天计划执行。只需获取 30 个模式的列表,查看仓库中对应文件夹里的题目分析,然后用你主要的工作语言在 LeetCode 上完成一组题目即可。这种系统化的方法能为你节省数周在题库中盲目摸索的时间。

相关项目