算法这门课有个尴尬的地方:很多人刷了几百道题,面试时换个问法还是卡住;也有人能背出快排的代码,却说不清为什么堆排序在建堆阶段是 O(n)。问题往往不在题量,而在于知识点是散的——每个都会一点,连不成线。这套门徒计划的算法课,适合的正是这种「刷过题但不成体系」的状态。

先确认你是不是它的目标读者

如果你属于下面几种情况,这门课值得花时间:能写出递归但分析不清递归树的时间复杂度;知道动态规划要定义状态,却总在状态转移方程上卡壳;图论部分只记得 Dijkstra 的名字,遇到带负权边的题就不知道换哪种算法;树结构里能写遍历,但面对平衡、堆调整这类操作要靠背。

反过来说,如果你连基本的循环、数组、指针都还不熟,直接上这门课会吃力。它不是零基础入门,默认你已经写过一定量的代码,缺的是把数据结构和算法串成体系的那一步。

它按什么线索组织内容

课程从数据结构这条主线切入,树和堆是重点铺开的部分。二叉树不只是讲三种遍历顺序,而是要把遍历背后的递归结构讲清楚,因为后面很多算法都是在这套结构上做变形。堆则单独拎出来讲优先队列,这直接关系到后面图算法里怎么高效取最小权值。

在此之上延伸到几类核心算法思想:分治、动态规划、图论。动态规划部分不会停在背包问题,而是要求你能从暴力递归一步步推导出状态定义和转移方程。图论覆盖最短路、最小生成树这类经典问题,重点在于搞清楚每种算法适用的前提条件——什么时候能用 Dijkstra,什么时候必须换 Bellman-Ford,什么时候图里有环会影响结果。

最后落到算法优化上。同一道题,O(n²) 和 O(n log n) 的差距在哪,用什么手段把复杂度降下来,这部分是把前面所有知识重新过一遍的过程。

配套练习该怎么用

光看视频不会产生算法能力,这门课的内容量不小,建议按「看一节、当天动手写一遍、隔三天再默写一遍」的节奏推进。尤其是树和动态规划两段,看讲解时觉得懂了,自己动手时往往写不出边界条件。

做题时不要只求通过。每道题写完后问自己三个问题:时间复杂度是多少,能不能优化一档,如果输入规模翻十倍会不会出问题。这三个问题比多做十道新题更有用。

图论部分建议单独整理一张表,把每种算法的适用条件、复杂度、能不能处理负权、能不能处理负环列清楚。这张表在面试前比任何笔记都管用。

看完应该能回答的问题

  • 为什么建堆的时间复杂度是 O(n),而不是直觉上的 O(n log n)?
  • 递归改写成迭代,通常有哪几种思路,各自适用于什么场景?
  • 一个问题满足什么条件才适合用动态规划,而不是贪心或分治?
  • Dijkstra 为什么不能处理负权边,换成 Bellman-Ford 后代价是什么?
  • 面对同一道题,你会从哪几个方向判断能不能把复杂度再降一档?

如果这些问题你现在答不上来,或者答得含糊,那这门课正好补的就是这块。缺什么补什么,别假装什么都会——算法这块,含糊的地方面试官一问就露。

�����ΰɡ���ͽ�ƻ� - �㷨��

����dz�������պ����㷨����

�༭����

ϵͳ���⾭���㷨���������ݽṹ���㷨�Ż����ʺ��㷨��������ס�

? �༭�Ƽ�

�����ΰɡ���ͽ�ƻ�������ϵͳѧϰ�㷨֪ʶ���������������

�γ̺��ǣ����ݽṹ�������㷨����̬�滮��ͼ�ۡ�����ͼ�ȡ�

�����

? ϵͳ���⾭���㷨
? �������ݽṹ���㷨�Ż�
? �ʺ��㷨���������

�γ�Ŀ¼

�����ΰɡ���ͽ�ƻ� - �㷨�αؿ�.png  [493.5 KB]
��03�µ�2�ڣ� 2-2 �ѣ�Heap�������ȶ���.mp4  [1.4 GB]
��03�µ�1�ڣ� 2-1 ��������Binary-Tree���뾭������.mp4  [1.6 GB]
��08�µ�2�ڣ� 2021.09.10 7-2 ��̬�滮�㷨.mp4  [853.8 MB]
��09�µ�1�ڣ� ����ƥ���㷨��KMP��Sunday �� Shift-[And.mp4  [911.6 MB]
��03�µ�3�ڣ� 2-3 ���鼯��Union-find������������.mp4  [1.4 GB]
��11�µ�1�ڣ� 2021.12.10 ��Ȥ��Ī����˹���ݣ�M?bius in.mp4  [932.9 MB]
��05�µ�3�ڣ� ���ѣ�DFS������ѣ�BFS������ʶ����״̬�ռ�.mp4  [1.3 GB]
��06�µ�3�ڣ� 2021.07.29 ר�����������.mp4  [1.5 GB]
��11�µ�3�ڣ� ����ϵͳ�е� RSA �㷨������.mp4  [1003.8 MB]
��11�µ�4�ڣ� ����ͽ����ʢ�䡿����ϵͳ�е� RSA �㷨������.mp4  [2.3 GB]
��05�µ�1�ڣ� �����㷨��Binary-Search�����¾����䣬��Խ����.mp4  [1.5 GB]
��02�µ�3�ڣ� 1-3 �ݹ���ջ��Stack�����������ʽ��ֵ.mp4  [1.6 GB]
��07�µ�1�ڣ� 2021.08.06 6-1��˺ AVL ��.mp4  [1.5 GB]
��08�µ�3�ڣ� 2021.09.17 7-3 ��̬�滮�㷨�Ż�.mp4  [877.0 MB]
��10�µ�3�ڣ� 2021.12.03 һ����ʽ�������㷨ѧϰ�Ұ�.mp4  [770.1 MB]
��01�µ�1�ڣ� �������.ts  [1.4 GB]
��02�µ�1�ڣ� 1-1 ������List������������.mp4  [1.1 GB]
��04�µ�3�ڣ� 3-3�㷨ϵ��(Algorithm�㷨��̸)��Ȥ������˼��.mp4  [1.2 GB]
��08�µ�1�ڣ� 2021.09.03 7-1 �����㷨��������·.mp4  [1.5 GB]
��05�µ�2�ڣ� ��ϣ���벼¡������.mp4  [1.4 GB]
��02�µ�2�ڣ� 1-2 �̳߳���������У�Task-Queue��.mp4  [1.2 GB]
��09�µ�3�ڣ� �ֵ���Trie˫�����ֵ���Double-Array-Trie.mp4  [1.1 GB]
��11�µ�2�ڣ� ����ϵͳ�е� RSA �㷨��һ��.mp4  [1.1 GB]
��04�µ�2�ڣ� 3-2 �鲢����Merge-Sort�����Ӷ�·����·.mp4  [1.3 GB]
��10�µ�2�ڣ� 2021.11.12 ��ǰ׺������״����.mp4  [892.8 MB]
��10�µ�4�ڣ� ��Ȥ��Ī����˹���ݣ�M?bius inversion��.mp4  [1.0 GB]
��07�µ�3�ڣ� 2021.08.27 6-3 ��˺��������£�-ɾ������.mp4  [1.2 GB]
��04�µ�1�ڣ� 3-1 ��������Quick-Sort�����Ż�.mp4  [947.9 MB]
��07�µ�2�ڣ� 2021.08.13 6-2 ��˺��������ϣ�-�������.mp4  [1.7 GB]
��06�µ�2�ڣ� 5-2 ����ջ��Monotone-Stack������������.mp4  [1.5 GB]
��06�µ�1�ڣ� 2021.07.01 5-1 �������м���������.mp4  [1.4 GB]
��10�µ�1�ڣ� ���������루Halfman-Coding��������ֵ���.mp4  [1.3 GB]
��09�µ�2�ڣ� 2021.10.15 �ַ���ƥ�����⡪���㷨ˢ��.mp4  [597.6 MB]

�ʺ���Ⱥ

  • �㷨��ѧ��
  • ��̰�����
  • ��ְ��

ѧϰ�ջ�

���պ����㷨����
�����������
Ϊ����������׼��

ף��ѧϰ��죡

ѧ�����ɣ�ǰ���ƽ���