正版资源马士兵数据结构大师课【VIP】
课程定位与核心痛点 数据结构是后端开发的底层基石,但多数开发者在实际工程中只停留在“会用 API”的层面,一旦面临性能瓶颈或需要手写复杂逻辑,便无从下手。这门课由马士兵主讲,并非泛泛而谈理论,而是聚焦于 Java 生态下数据结构与算法的深度结合。它解决的核心问题是:如何从线性表、树、图到动态规划,建
课程定位与核心痛点
数据结构是后端开发的底层基石,但多数开发者在实际工程中只停留在“会用 API”的层面,一旦面临性能瓶颈或需要手写复杂逻辑,便无从下手。这门课由马士兵主讲,并非泛泛而谈理论,而是聚焦于 Java 生态下数据结构与算法的深度结合。它解决的核心问题是:如何从线性表、树、图到动态规划,建立起一套可复用、可验证的工程化思维。课程涵盖 ArrayList 扩容机制、二叉搜索树操作、归并排序与快排代码实现、动态规划经典模型(如爬楼梯、零钱兑换、最长回文)以及图论基础等高频考点与工程必备技能,帮助学习者补齐从“调包侠”到“能写优化代码”的能力缺口。
适合人群与前置要求
本课程适合已有 Java 基础、了解基本语法和面向对象概念的开发者,尤其适用于准备大厂技术面试或希望提升代码底层理解的后端工程师。无需深厚数学背景,但需具备基本的逻辑推理能力。建议学习者先掌握 Java 集合框架的基本使用,再进入本课程系统学习。内容按模块递进,从基础排序算法开始,逐步过渡到高级数据结构与动态规划,层层深入。
学习路径与资料使用建议
建议按以下顺序学习:首先完成排序与查找部分(二分查找、快速排序、归并排序),理解时间复杂度与常数操作;其次学习动态数组与哈希表,掌握内存管理与扩容策略;接着深入二叉树与二叉搜索树,练习递归与非递归实现;最后攻克动态规划与图论,结合对数器验证算法正确性。资料包中每个知识点均配有独立课时视频,建议边看边敲代码,配合本地项目结构进行实战练习,而非仅被动观看。学完后可独立完成中等难度算法题,并能将所学应用于日常开发中的性能优化场景。
课程目录
课程目录378 集
- 课时3-完全二叉树节点个数.mp4
- 课时2-二叉搜索树最小后续+拆分二叉搜索树.mp4
- 课时1-二叉树最长连续序列.mp4
- 课时4-词典最长单词+单词搜索2.mp4
- 课时5-区域和检索.mp4
- 课时2-DP02不同路径12.mp4
- 课时4-DP04最长回文.mp4
- 课时3-DP03零钱兑换12.mp4
- 课时1-DP01动态规划思路与爬楼梯问题.mp4
- 课时7-递归和非递归实现PartitionAndQuickSort.mp4
- 璇炬椂2-闈為€掑綊.mp4
- 课时1-归并排序.mp4
- 课时6-快排代码及升级代码.mp4
- 课时3-局部最小值问题.mp4
- 课时6-等差数列求和公式.mp4
- 课时9-哈希表和有序表的使用.mp4
- 课时4-什么是常数操作.mp4
- 课时8-动态数组使用和扩容.mp4
- 课时2-有序数组中找到=num最左的位置.mp4
- 课时1-有序数组中找到num.mp4
- 课时7-什么是动态数组.mp4
- 课时5-什么是时间复杂度.mp4
- 课时6-冒泡排序.mp4
- 课时5-选择排序.mp4
- 课时4-给定一个参数N 返回1!+2!+3!+…+N!的结果.mp4
- 课时3-算法的分类.mp4
- 课时2-什么叫算法.mp4
- 课时7-插入排序.mp4
- 璇炬椂9-绛旂枒.mp4
- 课时8-优化插入排序.mp4
- 课时6-对数器的使用.mp4
- 课时4-从1-5随机到1-7随机.mp4
- 课时5-01不等概率随机到01等概率随机.mp4
- 课时3-java中的Math.random()函数.mp4
- 课时1-什么叫数据结构.mp4
- 课时2-最基本的数据结构.mp4
- 课时4-使用位运算实现加法.mp4
- 课时6-使用位运算实现乘法.mp4
- 课时7-使用位运算实现除法.mp4
- 课时5-使用位运算实现减法.mp4
- 课时2-位图的实现.mp4
- 课时3-怎么使用位运算进行加减乘除.mp4
- 课时1-位图的功能.mp4
- 课时8-怎么解决系统最小值转绝对值.mp4
- 课时3-二叉树基本概念和判断两颗树是否结构相同.mp4
- 课时4-判断一棵树是否是镜面树.mp4
- 课时2-leetcode 23:合并k个升序链表.mp4
- 课时6-leetcode105用先序数组和中序数组重建一棵树.mp4
- 课时5-返回一棵树的最大深度.mp4
- 课时6-用双链表结构实现双端队列.mp4
- 课时2-单链表的反转.mp4
- 课时4-用单链表结构实现队列.mp4
- 课时9-两个有序链表的合并.mp4
- 课时7-K个节点的组内逆序调整.mp4
- 课时8-两个链表相加.mp4
- 课时3-双链表的反转.mp4
- 课时1-介绍单链表和双链表.mp4
- 课时5-用单链表结构实现栈.mp4
- 课时5-收集达标路径和.mp4
- 课时2-判断是否是二叉树.mp4
- 课时3-判断是否是平衡搜索二叉树.mp4
- 课时1-leetcode0102二叉树按层遍历并收集节点.mp4
- 课时4-能否组成路径和.mp4
- 课时59-递归和非递归实现PartitionAndQuickSort.mp4
- 课时58-快排代码及升级代码.mp4
- 课时48-leetcode0102二叉树按层遍历并收集节点.mp4
- 课时53-归并排序.mp4
- 璇炬椂54-闈為€掑綊.mp4
- 课时49-判断是否是二叉树.mp4
- 课时52-收集达标路径和.mp4
- 课时50-判断是否是平衡搜索二叉树.mp4
- 课时51-能否组成路径和.mp4
- 课时47-leetcode105用先序数组和中序数组重建一棵树.mp4
- 课时45-判断一棵树是否是镜面树.mp4
- 课时43-leetcode 23:合并k个升序链表.mp4
- 课时44-二叉树基本概念和判断两颗树是否结构相同.mp4
- 课时40-使用位运算实现除法.mp4
- 课时41-怎么解决系统最小值转绝对值.mp4
- 课时38-使用位运算实现减法.mp4
- 课时37-使用位运算实现加法.mp4
- 课时35-位图的实现.mp4
- 课时10-什么叫数据结构.mp4
- 课时36-怎么使用位运算进行加减乘除.mp4
- 课时11-最基本的数据结构.mp4
- 课时33-两个有序链表的合并.mp4
- 课时32-两个链表相加.mp4
- 课时22-什么是动态数组.mp4
- 课时29-用单链表结构实现栈.mp4
- 课时12-java中的Math.random()函数.mp4
- 课时19-什么是常数操作.mp4
- 课时17-有序数组中找到=num最左的位置.mp4
- 课时18-局部最小值问题.mp4
- 课时25-介绍单链表和双链表.mp4
- 课时21-等差数列求和公式.mp4
- 课时15-对数器的使用.mp4
- 课时27-双链表的反转.mp4
- 课时24-哈希表和有序表的使用.mp4
- 课时16-有序数组中找到num.mp4
- 课时26-单链表的反转.mp4
- 课时20-什么是时间复杂度.mp4
- 课时14-01不等概率随机到01等概率随机.mp4
- 课时28-用单链表结构实现队列.mp4
- 课时46-返回一棵树的最大深度.mp4
- 课时39-使用位运算实现乘法.mp4
- 课时13-从1-5随机到1-7随机.mp4
- 课时34-位图的功能.mp4
- 课时31-K个节点的组内逆序调整.mp4
- 课时23-动态数组使用和扩容.mp4
- 课时30-用双链表结构实现双端队列.mp4
- 课时57-一条线最多能通过几个点.mp4
- 课时59-二维网格中查找出所有包含的单词.mp4
- 课时64-leetcode 0012 整数转罗马数字.mp4
- 课时8-边框为1的最大正方形.mp4
- 课时66-leetcode 0014 最长公共前缀.mp4
- 课时67-leetcode 0017 电话号码的字母组合.mp4
- 课时69-leetcode 0020 有效的括号.mp4
- 课时71-leetcode 0026 删除有序数组中的重复项.mp4
- 课时79-leetcode 0056 合并区间.mp4
- 璇炬椂81-leetcode 0066 鍔犱竴.mp4
- 课时58-三个有序数组选三个数彼此相减的绝对值相加怎么最小.mp4
- 课时68-leetcode 0019 删除链表的倒数第N个结点.mp4
- 课时63-leetcode 0008 字符串转换整数.mp4
- 课时62-leetcode 0007 翻转数字.mp4
- 课时73-leetcode 0036 有效的数独.mp4
- 课时72-leetcode 0034 在排序数组中查找元素的第一个和最后一个位置.mp4
- 课时90-leetcode 0108 将有序数组转换为二叉搜索树.mp4
- 课时77-leetcode 0033 搜索旋转排序数组.mp4
- 课时80-leetcode 0062 不同路径.mp4
- 课时70-leetcode 0022 括号生成.mp4
- 课时60-鹅厂文化衫问题.mp4
- 课时6-需要排序的最短子数组长度.mp4
- 课时76-leetcode 0049 字母异位词分组.mp4
- 课时84-leetcode 0079 单词搜索.mp4
- 课时75-leetcode 0038 外观数列.mp4
- 课时85-leetcode 0088 合并两个有序数组.mp4
- 课时7-最长无重复字符的子串长度.mp4
- 课时83-leetcode 0073 矩阵置零.mp4
- 课时65-leetcode 0013 罗马数字转整数.mp4
- 课时139-一天内的最多观影场次.mp4
- 课时148-所有项目完成的最短时间.mp4
- 课时141-环形分糖果问题.mp4
- 课时143-leetcode 0395 至少有k个重复字符的最长子串.mp4
- 课时142-leetcode 0347 前k个高频元素.mp4
- 课时147-leetcode 0687 最长同值路径.mp4
- 课时14-分糖果问题及其进阶问法.mp4
- 课时145-leetcode 0454 四数相加二.mp4
- 课时140-上下左右随便走从左上到右下的最短距离.mp4
- 课时130-leetcode 0326 是否是3的幂.mp4
- 课时134-leetcode 0348 设计井字游戏.mp4
- 课时125-leetcode 0287 寻找重复数.mp4
- 课时136-leetcode 0384 打乱数组.mp4
- 课时127-leetcode 295 数据流中位数.mp4
- 课时126-leetcode 0289 生命游戏.mp4
- 课时128-leetcode 0315 计算右侧小于当前元素的个数.mp4
- 课时13-不能取相邻数字的子序列最大累加和.mp4
- 课时133-leetcode 0341 扁平化嵌套列表迭代器.mp4
- 课时131-leetcode 328 奇偶链表.mp4
- 课时12-子矩阵的最大累加和.mp4
- 课时138-魔法石头过河问题.mp4
- 课时135-leetcode 0380 O(1)时间插入 删除和获取随机元素.mp4
- 课时120-leetcode 0251 展开二维向量.mp4
- 课时132-leetcode 0340 至多包含k个不同字符.mp4
- 课时121-leetcode 0269 火星词典.mp4
- 课时123-leetcode 0279 完全平方数.mp4
- 课时118-leetcode 0238 除自身以外数组的乘积.mp4
- 课时119-leetcode 0242 有效的字母异位词.mp4
- 课时122-leetcode 0277 查寻名人.mp4
- 课时129-leetcode 324 摆动排序ii.mp4
- 课时137-字符串str在新字典序中是第几位.mp4
- 课时50-二维接雨水问题.mp4
- 课时37-股票问题3(2).mp4
- 课时53-被切的数字不算能否切成4个累加和相等的部分.mp4
- 课时49-一维接雨水问题.mp4
- 课时61-leetcode 0001 两数之和.mp4
- 课时54-最小包含子串.mp4
- 课时4-让所有司机获得总体最多收入的分配问题.mp4
- 课时34-缺失的最小正整数.mp4
- 课时38-股票问题4.mp4
- 课时42-组成所有数字的最小补丁数问题.mp4
- 课时3-以+或-连接返回最后算出target的方法数.mp4
- 课时31-正则表达式匹配问题.mp4
- 课时33-求完全二叉树的节点个数.mp4
- 课时51-超级水王问题和摩尔投票及其扩展.mp4
- 课时37-股票问题3(1).mp4
- 课时39-股票问题含冷冻期.mp4
- 课时55-一种字符只保留一个的最小字典序结果.mp4
- 课时46-来去捡樱桃问题.mp4
- 课时56-累加和为0的所有三元组.mp4
- 课时52-相邻K个石子才能合并最终合成一堆的最小代价.mp4
- 课时48-最小包含区间问题.mp4
- 课时30-自由选择数组中的数字返回严格+1的最长序列长度.mp4
- 课时40-股票问题含手续费.mp4
- 课时44-在每行每列有序的二维数组中找最小的第K个数.mp4
- 课时5-含有SetAll功能的哈希表.mp4
- 课时41-数组的子集能否组成sum.mp4
- 课时28-切出来的子串都是回文串的最少划分数的多种考法.mp4
- 课时45-S字符串有多少个子序列等于T字符串.mp4
- 课时32-最长的有效括号子串的长度.mp4
- 课时26-布尔表达式的期待方法数.mp4
- 课时47-LRU内存替换算法.mp4
- 课时43-约瑟夫环问题.mp4
- 课时108-leetcode 0189 转轮数组.mp4
- 课时117-leetcode 0237 删除链表中的节点.mp4
- 课时104-leetcode 0163 缺失的区间.mp4
- 课时112-leetcode 0204 计数质数.mp4
- 课时1-绳子覆盖最多的点数.mp4
- 课时11-子数组的最大累加和.mp4
- 课时100-leetcode 0140 单词拆分ii.mp4
- 课时114-leetcode 0207 课程表.mp4
- 课时109-leetcode 0190 颠倒二进制位.mp4
- 课时102-leetcode 0150 逆波兰表达式求值.mp4
- 课时103-leetcode 0152 乘积最大子数组.mp4
- 课时106-leetcode 0171 Excel表列序号.mp4
- 课时107-leetcode 0172 阶乘后的零.mp4
- 课时116-leetcode 0213 打家劫舍ii.mp4
- 课时105-leetcode 0166 分数到小数.mp4
- 课时101-leetcode 0148 排序链表.mp4
- 课时115-leetcode 0210 课程表ii.mp4
- 课时10-最多装两个人的船同时过河问题.mp4
- 课时113-出卷子的方法数.mp4
- 课时110-leetcode 0191 位1的个数.mp4
- 课时155-leetcode 0406 根据身高重建队列.mp4
- 课时29-找到两个有序数组中整体第K小的数.mp4
- 课时161-leetcode 0621 任务调度器.mp4
- 课时158-leetcode 0438 找到字符串中所有字母异位词.mp4
- 课时151-leetcode 0221 最大正方形.mp4
- 课时156-leetcode 0437 路径总和iii.mp4
- 课时25-跳跃游戏.mp4
- 课时164-leetcode 0763 划分字母区间.mp4
- 课时159-leetcode 0448 找到所有数组中消失的数字.mp4
- 课时2-二维数组中的最长递增路径长度.mp4
- 课时153-leetcode 0337 打家劫舍iii.mp4
- 课时20-公式字符串的结算结果.mp4
- 课时27-至少添加多少个字符能整体变成回文串的多种考法.mp4
- 课时24-判断一个数字是不是stepsum.mp4
- 课时22-最长递增子序列长度.mp4
- 课时150-leetcode 0114 二叉树展开为链表.mp4
- 课时149-打牌每一轮都赢最后的最大分数.mp4
- 课时19-数组中的单词有多少种拼接方法.mp4
- 课时21-随意选两根支柱所能容纳的最大水量.mp4
- 课时157-想让a和b一样大至少多少轮.mp4
- 课时162-leetcode 0647 回文子串.mp4
- 课时17-覆盖全树的最少相机数.mp4
- 课时23-俄罗斯套娃问题.mp4
- 课时163-leetcode 0739 每日温度.mp4
- 课时154-leetcode 0394 字符串解码.mp4
- 课时16-编辑距离问题.mp4
- 课时37-股票问题3.mp4
- 课时152-leetcode 0226 翻转二叉树.mp4
- 课时15-字符串交错组成问题.mp4
- 课时18-相邻两数的最大差值.mp4
- 课时146-leetcode 0673 最长递增子序列的个数.mp4
- 课时160-leetcode 0617 合并二叉树.mp4
- 课时96-leetcode 0125 验证回文串.mp4
- 课时94-leetcode 0124 二叉树中的最大路径和.mp4
- 课时97-leetcode 0127 单词接龙.mp4
- 课时37-股票问题3(3).mp4
- 课时95-leetcode 0639 解码方法ii.mp4
- 课时36-股票问题2.mp4
- 课时35-股票问题1.mp4
- 课时98-leetcode 0130 被围绕的区域.mp4
- 课时99-leetcode 0139 单词拆分.mp4
- 课时93-leetcode 0119 杨辉三角二.mp4
- 课时9-能同时比赛的最大场次.mp4
- 课时91-leetcode 0116 填充每个节点的下一个右侧节点指针.mp4
- 课时86-leetcode 0091 解码方法.mp4
- 课时87-leetcode 0098 验证二叉搜索树.mp4
- 课时92-leetcode 0118 杨辉三角.mp4
- 课时89-leetcode 0103 二叉树的锯齿形层序遍历.mp4
- 课时88-leetcode 0101 对称二叉树.mp4
- 课时201-leetcode 0340 至多包含k个不同字符.mp4
- 课时202-leetcode 0341 扁平化嵌套列表迭代器.mp4
- 课时196-leetcode 295 数据流中位数.mp4
- 课时206-字符串str在新字典序中是第几位.mp4
- 课时204-leetcode 0380 O(1)时间插入 删除和获取随机元素.mp4
- 课时195-leetcode 0289 生命游戏.mp4
- 课时191-leetcode 0277 查寻名人.mp4
- 课时205-leetcode 0384 打乱数组.mp4
- 课时192-leetcode 0279 完全平方数.mp4
- 课时194-leetcode 0287 寻找重复数.mp4
- 课时188-leetcode 0242 有效的字母异位词.mp4
- 课时186-leetcode 0237 删除链表中的节点.mp4
- 课时185-leetcode 0213 打家劫舍ii.mp4
- 课时187-leetcode 0238 除自身以外数组的乘积.mp4
- 课时182-出卷子的方法数.mp4
- 课时181-leetcode 0204 计数质数.mp4
- 课时183-leetcode 0207 课程表.mp4
- 课时175-leetcode 0171 Excel表列序号.mp4
- 课时18-最多装两个人的船同时过河问题.mp4
- 课时178-leetcode 0190 颠倒二进制位.mp4
- 课时174-leetcode 0166 分数到小数.mp4
- 课时179-leetcode 0191 位1的个数.mp4
- 课时176-leetcode 0172 阶乘后的零.mp4
- 课时170-leetcode 0148 排序链表.mp4
- 课时17-能同时比赛的最大场次.mp4
- 课时173-leetcode 0163 缺失的区间.mp4
- 课时172-leetcode 0152 乘积最大子数组.mp4
- 课时184-leetcode 0210 课程表ii.mp4
- 课时171-leetcode 0150 逆波兰表达式求值.mp4
- 课时233-leetcode 0337 打家劫舍iii.mp4
- 课时215-leetcode 0673 最长递增子序列的个数.mp4
- 课时224-两人一船偶数过河问题.mp4
- 课时226-石头游戏问题iv.mp4
- 课时220-求括号串的分数.mp4
- 课时229-打牌每一轮都赢最后的最大分数.mp4
- 课时218-前缀01串切成等比例的最大部分数.mp4
- 课时207-魔法石头过河问题.mp4
- 课时217-若干次invert之后找到第K位的字符.mp4
- 课时227-公交的最少换乘线路问题.mp4
- 课时219-在s1中有多少个子串等于s2.mp4
- 课时230-leetcode 0114 二叉树展开为链表.mp4
- 课时225-长度为K的字典序最大子序列.mp4
- 课时22-批量的给定区间查询数字出现了几次.mp4
- 课时223-选择拿取方式获得最大分数.mp4
- 课时231-leetcode 0221 最大正方形.mp4
- 课时21-在二叉树上返回和某个节点距离为K的所有节点.mp4
- 课时208-一天内的最多观影场次.mp4
- 课时214-leetcode 0454 四数相加二.mp4
- 课时212-leetcode 0395 至少有k个重复字符的最长子串.mp4
- 课时203-leetcode 0348 设计井字游戏.mp4
- 课时243-leetcode 0647 回文子串.mp4
- 课时221-查询区间上的累加和、特殊标准值和最大值.mp4
- 课时228-所有项目完成的最短时间.mp4
- 课时216-leetcode 0687 最长同值路径.mp4
- 课时23-子数组的最大累加和.mp4
- 课时232-leetcode 0226 翻转二叉树.mp4
- 课时211-leetcode 0347 前k个高频元素.mp4
- 课时222-计算树上所有节点的权值.mp4
- 课时244-leetcode 0739 每日温度.mp4
- 课时210-环形分糖果问题.mp4
- 课时209-上下左右随便走从左上到右下的最短距离.mp4
- 课时9-自动售货机买可乐问题.mp4
- 课时67-炮弹打砖块掉落问题.mp4
- 课时101-完美洗牌问题.mp4
- 课时124-三个有序数组选三个数彼此相减的绝对值相加怎么最小.mp4
- 课时69-累加和小于等于K的子数组最大累加和.mp4
- 课时77-股票问题4.mp4
- 课时75-股票问题2.mp4
- 课时71-求完全二叉树的节点个数.mp4
- 课时111-最长的可整合子数组.mp4
- 课时126-自由用加、减、乘连接返回所有能够得到目标值的表达式.mp4
- 课时89-返回字符串中有多少字面值不同的子序列.mp4
- 课时125-二维网格中查找出所有包含的单词.mp4
- 课时131-leetcode 0007 翻转数字.mp4
- 课时133-leetcode 0012 整数转罗马数字.mp4
- 课时81-最小不可组成和.mp4
- 课时108-广告牌的相等左右柱的最大值.mp4
- 课时65-超级洗衣机问题.mp4
- 课时87-找到所有能拼成回文串的索引组合.mp4
- 课时141-leetcode 0034 在排序数组中查找元素的第一个和最后一个位置.mp4
- 课时88-S字符串有多少个子序列等于T字符串.mp4
- 课时138-leetcode 0020 有效的括号.mp4
- 课时7-以+或-连接返回最后算出target的方法数.mp4
- 课时76-股票问题3.mp4
- 课时140-leetcode 0026 删除有序数组中的重复项.mp4
- 课时132-leetcode 0008 字符串转换整数.mp4
- 课时80-数组的子集能否组成sum.mp4
- 课时68-最长的有效括号子串的长度.mp4
- 课时120-IP掩码问题.mp4
- 课时90-求某个状态是汉诺塔最优行动的第几步.mp4
- 课时73-缺失的最小正整数.mp4
- 课时128-邀请所有乐队演出的最小花费.mp4
- 课时66-旋变字符串问题.mp4
- 课时137-leetcode 0019 删除链表的倒数第N个结点.mp4
- 课时103-树链剖分详解.mp4
- 课时104-三个不相容子数组的最大累加和.mp4
- 课时85-在每行每列有序的二维数组中找数字.mp4
- 课时64-抽牌获胜概率问题.mp4
- 课时135-leetcode 0014 最长公共前缀.mp4
- 课时86-在每行每列有序的二维数组中找最小的第K个数.mp4
- 课时10-一种接受并按顺序打印信息的数据结构.mp4
- 课时107-可见山峰对问题.mp4
- 课时94-LRU内存替换算法.mp4
- 课时72-恢复搜索二叉树的错误节点.mp4
- 课时78-股票问题含冷冻期.mp4
- 课时70-满足搜索二叉树条件的最大拓扑结构.mp4
- 课时105-一维接雨水问题.mp4
- 课时127-单词接龙问题.mp4
- … 共 779 条




