如果你正准备面试,或者刷题时总卡在“看得懂题解、自己写不出来”,这套算法基础班值得先了解清楚再决定要不要投入时间。它不讲花哨的竞赛技巧,重点放在链表、二叉树、排序、哈希表这些面试和日常开发里反复出现的基础结构上,用 Python 和 Java 两套语言对照着讲。

它解决的是什么问题

很多人学算法的困境不是不聪明,而是缺一层“把思路翻译成代码”的训练。这门课针对的正是这个环节:同一个算法逻辑,先用一种语言把思路拆开,再用另一种语言实现一遍,让你看清哪些是算法本身、哪些只是语法差异。链表和二叉树这两块尤其典型,指针怎么挪、递归怎么收、边界怎么判,都是实际写代码时最容易出错的地方。课程里有手把手带写代码的部分,节奏偏慢,适合跟着敲而不是只听。

适合什么基础,先看哪几块

它定位在基础班,不要求你有算法竞赛背景,但需要至少会一门语言的语法:能写循环、函数、简单的类。如果你完全没写过代码,先补语言基础再来。Python 和 Java 都提供,你可以只跟一门,另一门当参考,不必两边都啃。

建议的进入顺序是先看链表和二叉树这两块。原因很实际:它们是后续很多题型的骨架,也是面试里出现频率最高、最容易暴露基本功的部分。排序和哈希表可以放在之后,前者帮你理解复杂度,后者在工程里用得极多。带源码的课件建议在看完一节后自己重写一遍,而不是直接抄,抄完能跑不等于会写。

学完能独立做什么,资料怎么配合

跟完并认真练习后,你应该能独立完成几件事:手写单链表的增删改查和反转,独立实现二叉树的遍历与常见递归题,说清几种排序的时间与空间复杂度差异,并用哈希表解决去重、计数、查找类问题。这些能力直接对应面试手写环节和日常开发中的数据处理。

资料的使用建议是:视频看一遍理解思路,源码课件当对照答案,但练习时先关掉它自己写,卡住了再回看对应片段。每学完一个结构,去刷题平台找五到十道同类型题巩固,比反复看视频有效得多。如果时间有限,优先保证链表和二叉树练到手熟,其余部分按需补。

课程目录

第 1 部分73 集
  • 14 第十四章【互动】手把手带写代码——链表(Python 语言) 14 04 【基础班】170-python.mp4
  • [21.5 MB] 14 02 【基础班】452-python.mp4
  • [9.1 MB] 14 03 【基础班】228-python.mp4
  • [5.7 MB] 14 01 【基础班】219-python.mp4
  • [12.3 MB] 📁
  • 24 第二十四章【互动】手把手带写代码——二叉树(Python 语言) 24 03 【基础班】1807-python(递归+递推).mp4
  • [22.7 MB] 24 04 【基础班】1807-python(记忆化搜索).mp4
  • [12.8 MB] 24 01 【基础班】71-python.mp4
  • [30.0 MB] 24 02 【基础班】650-python.mp4
  • [25.5 MB] 📁
  • 22 第二十二章【互动】手把手带写代码——栈和队列(Python 语言) 22 03 【基础班】421-python.mp4
  • [20.6 MB] 22 01 【基础班】492-python.mp4
  • [19.0 MB] 22 02 【基础班】541-python.mp4
  • [18.1 MB] 22 04 【基础班】575-python.mp4
  • [23.0 MB] 📁
  • 25 第二十五章【互动】手把手带写代码——二叉树(Java 语言) 25 02 【基础班】650-java.mp4
  • [25.8 MB] 25 04 【基础班】1807-java(记忆化搜索).mp4
  • [14.2 MB] 25 01 【基础班】71-java.mp4
  • [26.6 MB] 25 03 【基础班】1807-java(递归+递推).mp4
  • [19.5 MB] 📁
  • 02 第二章【互动】零基础找CS工作,该如何准备?(Java 语言) 02 Java-编程语言中的变量.mp4
  • [49.9 MB] 02 Java-编程语言.mp4
  • [10.9 MB] 02 Java-面试知识点.mp4
  • [9.9 MB] 02 Java-变量命名风格.mp4
  • [14.3 MB] 02 Java-面试大揭秘.mp4
  • [22.6 MB]
  • 02 Java-变量命名风格 —— 牛逼程序员的敲门砖.mp4
  • [34.7 MB] 02 Java-班班有话说.mp4
  • [416.0 KB] 02 Java-简历大揭秘.mp4
  • [43.1 MB] 02 Java-Java课程安排及课前准备.mp4
  • [57.7 MB] 02 Java-简历知识点.mp4
  • [10.5 MB] 02 Java-变量.mp4
  • [8.3 MB] 02 Java-int型变量运算.mp4
  • [25.3 MB] 02 Java-声明变量.mp4
  • [14.3 MB] 📁
  • 13 第十三章【互动】手把手带写代码——字符串(Java 语言) 13 01 【基础班】1781-JAVA.mp4
  • [15.2 MB] 13 04 【基础班】1819-JAVA.mp4
  • [14.8 MB] 13 02 【基础班】1784-JAVA.mp4
  • [12.7 MB] 13 03 【基础班】958-JAVA.mp4
  • [14.9 MB] 📁
  • 40 第四十章【互动】手把手带写代码——排序(Java 语言) 整数排序快排.mov [1.6 GB] 逆序对.mov [1.8 GB] 颜色分类.mov [825.6 MB] 整数排序归并.mov [2.1 GB] 📁
  • 34 第三十四章【互动】手把手带写代码——哈希表(Python 语言) 查找子数组.mov [2.2 GB] 差为k的数对数量.mov [1.3 GB] 森林中的兔子.mov [4.4 GB] 句子相似性.mov [4.8 GB] 📁
  • 29 第二十九章【互动】哈希表 Set & Map(Java 语言) 29 04 32Java-哈希表的冲突解决-开散列.mp4
  • [32.8 MB] 29 03 32Java-哈希表和冲突解决-重哈希.mp4
  • [19.5 MB] 29 02 32Java-哈希表及其实现.mp4
  • [21.7 MB] 29 01 32Java-集合和索引.mp4
  • [32.9 MB] 29 05 32Java-哈希表的冲突解决-闭散列.mp4
  • [21.6 MB] 📁
  • 06 第六章【互动】列表、元组、字符串与引用(Python 语言) 06 python-总结.mp4
  • [5.6 MB] 06 python-List的增删改查-1.mp4
  • [27.1 MB] 06 python-元组.mp4
  • [10.1 MB] 06 python-String的介绍.mp4
  • [46.9 MB] 06 python-什么是数据结构.mp4
  • [5.6 MB] 06 python-内存模型.mp4
  • [25.7 MB] 06 python-List的增删改查-2.mp4
  • [35.9 MB] 06 python-列表生成器.mp4
  • [7.9 MB] 06 python-引用的第一个例子和第二个例子.mp4
  • [14.3 MB] 06 python-String的基本操作.mp4
  • [11.9 MB] 06 python-引用的第三个例子.mp4
  • [20.2 MB] 06 python-本节重点和上节回顾.mp4
  • [6.0 MB] 06 python-练习一.mp4
  • [27.4 MB] 06 python-修改引用VS修改对象.mp4
  • [23.8 MB] 📁
  • 39 第三十九章【互动】手把手带写代码——排序(Python 语言) 整数排序快排.mov [1.5 GB] 逆序对.mov [1.6 GB] 颜色分类.mov [558.1 MB] 整数排序merge sort.mov [1.2 GB] 📁
  • 04 第四章【互动】编程基础知识:变量与程序控制流(Java 语言) 04 Java-浮点数及数据类型转换.mp4
  • [36.4 MB] 04 Java-boolean类型及其操作.mp4
  • [27.1 MB]
  • 04 Java-IntelliJ and Sublime.mp4
  • [40.1 MB] 04 Java-char类型和Unicode.mp4
  • [57.9 MB] 04 Java-数组和循环.mp4
  • [47.0 MB] 04 Java-if语句.mp4
  • [37.0 MB] 📁
  • 32 第三十二章【互动】手把手带写代码——分治法(Python 语言) 修剪二叉搜索树.mov [2.9 GB] 子树.mov [3.9 GB] 在二叉搜索树中查找.mov [2.4 GB] 二叉树中的最大路径和.mov [2.5 GB] 📁
20 第二十章【直播】栈和队列 Stack & Queue41 集
  • 20 栈和队列 Stack & Queue.mp4
  • [273.3 MB] 📁
  • 16 第十六章【互动】栈和队列(Python 语言) 16 05 16 python-队列的实际应用及总结.mp4
  • [7.3 MB] 16 04 16 python-队列.mp4
  • [25.8 MB] 16 01 16 python-栈.mp4
  • [17.0 MB] 16 03 16 python-栈在操作系统中的应用.mp4
  • [44.1 MB] 16 02 16 python-栈的练习题.mp4
  • [18.8 MB] 📁
  • 27 第二十七章【互动】二叉搜索树(Java 语言) 27 01 Java-普通遍历.mp4
  • [41.2 MB] 27
  • 05 Java-Convert Binary Tree to Linked Lists by Depth.mp4
  • [21.4 MB] 27
  • 07 Java-Validate balanced binary tree.mp4
  • [22.5 MB] 27
  • 06 Java-Identical binary tree.mp4
  • [26.9 MB] 27
  • 08 Java-Validate Binary Search Tree.mp4
  • [26.8 MB] 27
  • 04 Java-Binary Tree Level Order Traversal.mp4
  • [15.4 MB] 27 03 Java-二叉树宽度优先遍历的复杂度分析.mp4
  • [23.7 MB] 27 02 Java-分层遍历.mp4
  • [23.8 MB] 📁
  • 17 第十七章【互动】栈和队列(Java 语言) 17 02 Java-函数调用栈.mp4
  • [19.2 MB] 17 03 Java-队列及其实现.mp4
  • [30.7 MB] 17 01 Java-栈及其实现.mp4
  • [24.6 MB] 📁
  • 03 第三章【互动】编程基础知识:循环、函数与面向对象(Python 语言) 03 python-补充-权限控制.mp4
  • [25.4 MB] 03 python-2.2.4 循环终止及while语句.mp4
  • [31.4 MB] 03 python-2.5 总结.mp4
  • [1.7 MB] 03 python-2.1 本节重点和课前回顾.mp4
  • [9.5 MB] 03 python-2.4.4 练习三.mp4
  • [9.9 MB] 03 python-2.2.1 如何写好if语句.mp4
  • [36.7 MB] 03 python-2.4.1 什么是面向对象及对象的概念.mp4
  • [9.3 MB] 03 python-2.4.3 什么是面向对象编程及封装性.mp4
  • [38.5 MB] 03 python-补充-构造函数.mp4
  • [13.7 MB] 03 python-2.2.2 练习一.mp4
  • [11.4 MB] 03 python-2.3.1 函数.mp4
  • [49.6 MB] 03 python-2.2.3 for循环.mp4
  • [42.3 MB] 03 python-2.3.2 练习二.mp4
  • [3.9 MB] 03 python-2.4.2 类的概念.mp4
  • [44.9 MB] 📁
11 第十一章【直播】链表 LinkedList62 集
  • 11 链表 LinkedList.mp4
  • [233.8 MB] 📁
  • 09 第九章【互动】链表及其操作,算法的时间复杂度(Java 语言) 09 Java-算法的时间复杂度.mp4
  • [22.5 MB] 09 Java-链表的操作-插入.mp4
  • [32.0 MB] 09 Java-什么是链表?.mp4
  • [21.2 MB] 09 Java-链表的操作-遍历.mp4
  • [43.4 MB] 09 Java-神奇的dummy节点.mp4
  • [23.5 MB] 09 Java-链表的操作-删除、查找、修改.mp4
  • [32.4 MB] 📁
  • 07 第七章【互动】String、面向对象、Reference、数据结构(Java 语言) 07 Java-Reference-变量赋值和函数传参.mp4
  • [22.2 MB]
  • 07 新Java-真题讲解 String to int.mp4
  • [20.8 MB] 07 Java-Reference-基本数据类型变量和引用.mp4
  • [31.3 MB]
  • 07 新Java-真题讲解 Valid palindrome.mp4
  • [46.7 MB] 07 新Java-函数的定义.mp4
  • [18.2 MB] 07 Java-Reference-数组和字符串.mp4
  • [31.9 MB] 07 Java-Reference-空引用null.mp4
  • [16.8 MB] 07 Java-数据结构定义及ArrayList.mp4
  • [36.4 MB] 07 新Java-field和method的修饰符.mp4
  • [50.9 MB] 07 新Java-面向对象的基本特性之封装.mp4
  • [34.2 MB] 07 新Java-初识类和对象.mp4
  • [15.3 MB] 07 新Java-构造函数.mp4
  • [49.7 MB] 07 新Java-函数的调用.mp4
  • [25.2 MB] 07 新Java-String及其常用操作.mp4
  • [12.0 MB] 07 Java-Reference-Java的内存模型.mp4
  • [26.0 MB] 📁
  • 18 第十八章【互动】二叉树的遍历方式(Python 语言) 18 14 python-总结.mp4
  • [1.8 MB] 18 05 python-函数自己调用自己会发生什么?.mp4
  • [13.4 MB] 18 01 python-本节重点和上节回顾2.mp4
  • [7.1 MB] 18 03 python-如何创建一棵二叉树.mp4
  • [19.8 MB] 18 04 python-如何做深度优先遍历.mp4
  • [18.3 MB] 18 07 python-修改报错的代码.mp4
  • [21.7 MB] 18 11 python-递归的时间复杂度.mp4
  • [30.9 MB] 18 12 python-练习题二.mp4
  • [16.4 MB] 18 09 python-什么是递归.mp4
  • [11.9 MB] 18 06 python-为什么前面的代码会报错?.mp4
  • [8.7 MB] 18 08 python-二叉树的遍历方式.mp4
  • [20.0 MB] 18 02 python-什么是树?二叉树的定义.mp4
  • [19.6 MB] 18 10 python-递归三要素.mp4
  • [16.5 MB] 18 13 python-练习题三.mp4
  • [23.0 MB] 📁
  • 15 第十五章【互动】手把手带写代码——链表(Java 语言) 15 04 【基础班】170-java.mp4
  • [23.2 MB] 15 01 【基础班】219-java.mp4
  • [15.0 MB] 15 02 【基础班】452-java.mp4
  • [11.4 MB] 15 03 【基础班】228-java.mp4
  • [6.6 MB] 📁
  • 01 第一章【互动】零基础找CS工作,该如何准备?(Python 语言) 01 python-1.4面试大揭秘.mp4
  • [25.4 MB] 01 python-1.5 课程介绍.mp4
  • [38.3 MB] 01 python-1.1自我介绍.mp4
  • [2.8 MB] 01 python-1.6.1交互式环境运行代码VS将代码写到py文件中.mp4
  • [26.8 MB] 01 python-1.6.7 短路运算.mp4
  • [8.3 MB] 01 python-1.6.3 整数运算.mp4
  • [10.7 MB] 01 python-1.6.5 浮点数和布尔型变量运算.mp4
  • [20.3 MB] 01 python-1.6.2 动态类型语言VS静态类型语言.mp4
  • [4.5 MB] 01 python-1.6.8 练习三及变量命名风格.mp4
  • [24.3 MB] 01 python-1.2本节重点.mp4
  • [909.1 KB] 01 python-1.3简历全攻略.mp4
  • [40.8 MB] 01 python-班班有话说.mp4
  • [527.0 KB] 01 python-1.6.4 练习一.mp4
  • [6.2 MB] 01 python-1.6.6 练习二及运算优先级.mp4
  • [20.0 MB] 📁
38 第三十八章【互动】排序队列46 集
  • 38-2Top K 问题().mp4
  • [81.7 MB] 38-6和堆相关的更多话题和广义队列().mp4
  • [75.2 MB] 38-5使用快排思想和优先队列解决 Top K 问题的比较.mp4
  • [45.6 MB] 38-4使用 Java 中的 PriorityQueue().mp4
  • [85.3 MB] 38-1基于堆的优先队列().mp4
  • [43.0 MB] 38-3作业:使用优先队列解决 Select K 问题().mp4
  • [15.3 MB] 📁
  • 33 第三十三章【互动】手把手带写代码——分治法(Java 语言) 修剪二叉搜索树.mov [3.9 GB] 二叉搜索树中查找.mov [2.4 GB] 📁
  • 28 第二十八章【互动】集合与字典 set & dictionary(Python 语言) 28 12 31python-哈希表设计要素之重哈希.mp4
  • [5.3 MB] 28 07 31python-练习二.mp4
  • [13.6 MB] 28 16 31python-总结.mp4
  • [2.5 MB] 28 08 31python-集合和字典的实现.mp4
  • [18.1 MB] 28 05 31python-练习一.mp4
  • [12.8 MB] 28 10 31python-哈希表设计要素之哈希函数.mp4
  • [23.8 MB] 28 13 31python-分治法练习三.mp4
  • [26.9 MB] 28 09 31python-hash table VS BST.mp4
  • [6.8 MB] 28 04 31python-set集合间的操作.mp4
  • [17.2 MB] 28 15 31python-分治法练习五.mp4
  • [13.4 MB] 28 06 31python-字典的基本操作.mp4
  • [58.4 MB] 28 11 31python-哈希表设计要素之哈希冲突.mp4
  • [14.3 MB] 28 14 31python-分治法练习四.mp4
  • [34.7 MB] 28 02 31python-set的简介.mp4
  • [7.7 MB] 28 01 31python-本节重点和上节回顾.mp4
  • [6.2 MB] 28 03 31python-set的常见操作.mp4
  • [21.2 MB] 📁
  • 26 第二十六章【互动】二叉搜索树(Python 语言) 26 03 python-分层遍历.mp4
  • [43.6 MB] 26 08 python-BST的基本操作之查找.mp4
  • [13.2 MB] 26 05 python-练习二.mp4
  • [25.5 MB] 26 09 python-BST的时间复杂度和空间复杂度.mp4
  • [7.6 MB] 26 06 python-什么是BST.mp4
  • [7.9 MB] 26 12 26python-总结.mp4
  • [1.8 MB] 26 01 python-本节重点和上节回顾.mp4
  • [12.2 MB] 26 02 python-宽度优先遍历的实现过程.mp4
  • [35.8 MB] 26 11 python-练习三和四.mp4
  • [47.3 MB] 26 10 python-平衡BST的应用.mp4
  • [2.4 MB] 26 07 python-BST的基本操作之插入.mp4
  • [36.9 MB] 26 04 python-练习一.mp4
  • [16.2 MB] 📁
  • 08 第八章【互动】线性数据结构-链表(Python 语言) 08 python-链表的基本操作(一).mp4
  • [31.8 MB] 08 python-算法的时间复杂度.mp4
  • [20.1 MB] 08 python-链表的概念.mp4
  • [16.5 MB] 08 python-链表的基本操作(二).mp4
  • [30.7 MB] 08 python-链表的遍历.mp4
  • [11.0 MB] 08 python-本节重点及上节回顾.mp4
  • [14.2 MB] 08 python-quiz.mp4
  • [25.8 MB] 📁
05 第五章【直播】CS 工作介绍,算法基础知识2 集
  • 05 CS 工作介绍,算法基础知识.mp4
  • [278.2 MB] 📁
10 第十章【直播】字符串 String16 集
  • 10 字符串 String-1.mp4
  • [226.4 MB]
  • 10 字符串 String-2.mp4
  • [156.9 MB] 📁
  • 19 第十九章【互动】二叉树的遍历方式(Java 语言) 19 01 Java-什么是二叉树.mp4
  • [28.3 MB] 19 05 Java-递归的复杂度分析.mp4
  • [23.6 MB] 19 02 Java-二叉树的递归遍历.mp4
  • [41.2 MB] 19
  • 07 Java-Maximum depth of binary tree.mp4
  • [22.7 MB] 19 04 Java-递归的定义和三要素.mp4
  • [36.5 MB] 19
  • 06 Java-Binary tree leaf sum.mp4
  • [13.4 MB] 19 03 Java-先序、中序和后序遍历.mp4
  • [37.8 MB] 📁
  • 21 第二十一章【直播】二叉树、二叉树的宽度与深度优先遍历,递归 21 二叉树、二叉树的宽度与深度优先遍历,递归.mp4
  • [267.9 MB] 📁
23 第二十三章【互动】手把手带写代码——栈和队列(Java 语言) 📁 📁9 集
  • 12 第十二章【互动】手把手带写代码——字符串(Python 语言) 12 01 【基础班】1781-PYTHON.mp4
  • [8.9 MB] 12 04 【基础班】1819-PYTHON.mp4
  • [14.4 MB] 12 03 【基础班】958-PYTHON.mp4
  • [19.7 MB] 12 02 【基础班】1784-PYTHON.mp4
  • [11.6 MB] 23 01 【基础班】492-java.mp4
  • [18.8 MB] 23 02 【基础班】541-java.mp4
  • [19.6 MB] 23 04 【基础班】575-java.mp4
  • [39.4 MB] 📁
  • 35 第三十五章【互动】手把手带写代码——哈希表(Java 语言) 森林中的兔子.mov [2.7 GB] 差为k的数对数量.mov [1.7 GB] 句子相似性.mov [2.3 GB] 查找子数组.mov [1.7 GB] 📁
31 第三十一章【互动】哈希 Hash10 集
  • 31-6 哈希表的动态空间处理与复杂度分析.mp4
  • [135.8 MB] 31-8 更多哈希冲突的处理方法.mp4
  • [21.6 MB] 31-1 哈希表基础.mp4
  • [100.6 MB] 31-5 实现属于我们自己的哈希表.mp4
  • [111.4 MB] 31-2 哈希函数.mp4
  • [59.9 MB] 31-4 链地址法 Seperate Chaining.mp4
  • [29.2 MB] 31-7 哈希表更复杂的动态空间处理方法.mp4
  • [122.3 MB] 31-3 Java中的hashCode方法.mp4
  • [132.6 MB] 📁
  • 36 第三十六章【互动】排序算法 Quick Sort & Merge Sort(Python 语言) 36.5归并排序的复杂度.mov [5.8 GB] 36.1普通排序算法.mov [2.3 GB] 36.9总结.mov [2.8 GB] 36.7快排的细节问题.mov [7.3 GB] 36.4分治法的代码思考方式.mov [1.7 GB] 36.6快速排序.mov [6.1 GB] 36.2归并排序1.mov [9.6 GB] 36.8快排的复杂度.mov [2.8 GB] 36.3归并排序2.mov [3.7 GB] 📁
37 第三十七章【互动】高级排序算法(Java 语言)10 集
  • 37-2实现冒泡排序法().mp4
  • [64.0 MB] 37-6冒泡排序的特点().mp4
  • [12.3 MB] 37-1 冒泡排序的基本思想().mp4
  • [51.0 MB] 37-3冒泡排序的优化().mp4
  • [105.8 MB] 37-5换个方式实现冒泡排序().mp4
  • [10.9 MB] 37-4冒泡排序还能优化().mp4
  • [116.5 MB] 📁
  • 30 第三十章【直播】利用分治法解决树的问题,二叉搜索树 利用分治法解决树的问题,二叉搜索树.mov [1.2 GB] Java-选择排序.mp4
  • [20.5 MB] 00【课件资料】九章算法基础班 Python+Java.zip
  • [56.6 MB] 适合人群 算法入门者 计算机专业学生 IT从业者 学习收获 掌握算法基础 提高编程能力 为算法进阶打下坚实基础 祝您学习愉快! 学有所成,前程似锦!