课程介绍

适合人群:

想从事计算机软件开发的职业,编程能力薄弱的程序员,想通过好公司算法面试的程序员

你将会学到:

包含了一个程序员 5 年内需要的所有数据结构与算法知识

  • 支持 Java、C++、Python、JavaScript 四种编程语言
  • 2000 多张动画清晰易懂的讲解各种常用数据结构与算法
  • 带你手写 10000 多行高质量代码
  • 注重理论的基础上,更注重实战

课程简介:

本课程支持 Java、C++、Python、Javascript 四种编程语言,内容包含基础篇、中级篇、高级篇、应用篇;

基础篇包含复杂度分析、数组和链表、栈和队列、排序算法、二分算法;

中级篇包含普通二叉树、二叉查找树、AVL 树和红黑树、堆和优先队列、Set、Map、跳表;

高级篇包含图结构、深度优先搜索、广度优先搜索、floodfill 算法、最 samll 生成树、最短路径、拓扑排序;

应用篇包含字符串匹配算法、LRU 缓存算法、海量数据处理算法、6.5 小时学透递归;

试看链接  https://pan.baidu.com/s/1tAf3SCLTvEx5I502h6a9AA?pwd=ttxn

相关推荐

极客 AI算法进阶训练营

恋上数据结构与算法1-3季 全套教程+课件

AI大模型算法-从大模型原理剖析到训练(微调)落地实战

课程目录

第1章 基础篇一:复杂度分析【1.6小时】【基础班】
1-1 复杂度分析课程内容
1-2 新建项目
1-3 为什么需要时间复杂度分析
1-4 算法执行时间的计算
1-5 大 O 复杂度表示法
1-6 渐进时间复杂度分析
1-7 常量阶时间复杂度
1-8 对数阶时间复杂度
1-9 时间复杂度分析方法总结
1-10 时间复杂度加法法则
1-11 时间复杂度乘法法则
1-12 时间复杂度分析例子
1-13 常用时间复杂度总结
1-14 平均时间复杂度
1-15 空间复杂度分析

第2章 基础篇二:数组和链表【4.7小时】【基础班】
2-1 静态数组
2-2 二次封装内置数组
2-3 二次封装内置数组的增删改查操作
2-4 二次封装内置数组的其他特点
2-5 动态数组的扩容和缩容
2-6 动态数组对比静态数组
2-7 链表对比数组
2-8 单向链表的查询操作实现
2-9 单向链表的修改和新增操作实现
2-10 单向链表的删除操作实现
2-11 单向链表测试及其复杂度分析
2-12 双向链表的优缺点
2-13 双向链表的修改和新增操作实现
2-14 双向链表的删除操作实现

第3章 基础篇三:栈和队列【4.2小时】【基础班】
3-1 栈的特点和使用场景
3-2 使用数组实现栈
3-3 使用链表实现栈
3-4 力扣 20 号题:有效括号
3-5 力扣 20 号题:最小栈
3-6 队列的特点和实现
3-7 循环队列的基础实现
3-8 循环队列的扩容和缩容
3-9 各种队列实现方式的比较和优化
3-10 Java 中的队列
3-11 剑指 9 号题:两个栈实现队列

第4章 基础篇四:排序算法(一)【7小时】【基础班】
4-1 双指针算法需要的基础知识
4-2 双指针之快慢指针
4-3 双指针之对撞指针以及总结
4-4 理解递归需要的基础知识
4-5 递归的理解
4-6 排序基础
4-7 冒泡排序
4-8 选择排序
4-9 插入排序
4-10 希尔排序(一)
4-11 希尔排序(二)
4-12 归并排序(一)
4-13 归并排序(二)
4-14 归并排序(三)
4-15 归并排序(四)
4-16 快速排序(一)
4-17 快速排序(二)
4-18 快速排序(三)

第5章 基础篇五:排序算法(二)【4.8小时】【基础班】
5-1 桶排序
5-2 计数排序
5-3 基数排序
5-4 如何写一个通用的排序算法
5-5 引用类型数组的排序
5-6 Java 内置排序算法
5-7 力扣 56 题:合并区间
5-8 力扣 179 题:最大数
5-9 力扣 75 题:颜色分类
5-10 力扣 164 题:最大间距
5-11 剑指 51 题:数组中的逆序对

第6章 基础篇六:二分算法【4.3小时】【基础班】
6-1 二分查找代码实现
6-2 几个二分查找细节问题
6-3 二分查找的变形问题 (一)
6-4 二分查找的变形问题 (二)
6-5 二分查找的应用 – IP 地址维护
6-6 力扣 704 题:二分查找
6-7 力扣 34 题:在排序数组中查找元素的第一个和最后一个位置
6-8 力扣 35 题:搜索插入位置
6-9 力扣 33 题:搜索旋转排序数组
6-10 剑指 11 题:旋转排序数组的最小数字
6-11 力扣 852 题:山脉数组的峰顶索引
6-12 力扣 1095 题:二分查找代码实现

第7章 基础篇七:链表相关算法【3小时】【基础班】
7-1 链表相关算法:基础知识
7-2 力扣 203 题:移除链表元素
7-3 力扣 206 题:反转链表
7-4 力扣 876 题:链表的中间节点
7-5 力扣 19 题:删除链表的第 N 个节点
7-6 力扣 21 题:合并两个有序链表
7-7 力扣 23 题:合并 K 个升序链表
7-8 力扣 147 题:对链表进行插入排序
7-9 力扣 148 题:排序链表

第8章 中级篇一:普通二叉树【4.7小时】【中级班】
8-1 树的基本概念
8-2 二叉树的存储
8-3 二叉树的前序遍历
8-4 二叉树的中序遍历
8-5 二叉树的后序遍历
8-6 二叉树的层序遍历
8-7 二叉树的递归实现
8-8 深度优先搜索和广度优先搜索
8-9 求二叉树的最大深度
8-10 力扣 112 题:路径总和
8-11 力扣 226 题:翻转二叉树
8-12 力扣 100 题:相同的树
8-13 力扣 101 题:对称二叉树

第9章 中级篇二:二叉查找树【7.6小时】【中级班】
9-1 二叉查找树的特点
9-2 二叉查找树的插入操作
9-3 二叉查找树的查询操作
9-4 二叉查找树删除操作(一)
9-5 二叉查找树删除操作(二)
9-6 二叉查找树删除操作(三)
9-7 二叉查找树修改操作
9-8 递归实现二叉查找树新增操作
9-9 递归实现二叉查找树查询操作
9-10 递归实现二叉查找树删除操作
9-11 什么是 AVL 树
9-12 平衡因子
9-13 判断一棵树是否是平衡树
9-14 右旋转
9-15 左旋转
9-16 LR 和 RL
9-17 AVL 树新增测试以及删除操作
9-18 2-3 树
9-19 认识红黑树
9-20 代码实现红黑树左旋转
9-21 红黑树的颜色翻转和右旋转
9-22 红黑树添加节点操作

第10章 中级篇三:堆和优先队列【4小时】【中级班】
10-1 常用高层数据结构内容大纲
10-2 引入堆和优先队列的问题
10-3 二叉堆的 Sift Up 逻辑
10-4 二叉堆的 Sift Down 逻辑
10-5 堆化操作
10-6 优先队列
10-7 力扣 23:合并 K 个升序链表
10-8 力扣 215:数组中的第 K 个最大元素
10-9 力扣 703:数据流中的第 K 大元素
10-10 力扣 295:数据流的中位数

第11章 中级篇四:Set、Map 和跳表【5.7小时】【中级班】
11-1 Set 的实现
11-2 哈希方法实现 Set
11-3 哈希冲突解决方案:开放寻址法
11-4 哈希冲突解决方案:链表法
11-5 Map 的实现
11-6 HashMap 的实现
11-7 Set 和 Map 的测试
11-8 力扣 349:两个数组的交集
11-9 力扣 350:两个数组的交集二
11-10 力扣 1:两数之和
11-11 力扣 167:两数之和变形题之输入有序数组
11-12 力扣 170:两数之和变形题之数据结构设计
11-13 力扣 653:两数之和变形题之输入 BST
11-14 力扣 15:三数之和
11-15 力扣 18:四数之和
11-16 什么是跳表
11-17 跳表的查询操作
11-18 跳表的插入和删除操作
11-19 跳表的使用场景

第12章 高级篇一:图的 DFS 和 BFS【5.1小时】【高级班】
12-1 无向无权图的内容大纲
12-2 图的基本概念
12-3 图的存储:邻接矩阵
12-4 图的存储:邻接表
12-5 图的 DFS 遍历(一)
12-6 图的 DFS 遍历(二)
12-7 DFS 实现联通分量
12-8 DFS 实现求单源路径
12-9 DFS 实现环检测
12-10 DFS 实现二分图检测
12-11 图的 BFS 遍历
12-12 BFS 实现联通分量、单源路径、环检测以及二分图检测
12-13 单源最短路径算法

第13章 高级篇二:图的经典算法【5小时】【高级班】
13-1 floodfill 算法基础
13-2 floodfill 算法
13-3 有权图
13-4 最小生成树
13-5 最短路径
13-6 其他种类图的内容大纲
13-7 有向图
13-8 有向图环检测
13-9 拓扑排序

第14章 应用篇一:字符串匹配算法【5.5小时】
14-1 应用篇内容
14-2 力扣 1244:排行榜
14-3 力扣 1396:设计地铁系统
14-4 字符串匹配算法:BF 算法
14-5 字符串匹配算法:RK 算法
14-6 字符串匹配算法:BM 算法(一)
14-7 字符串匹配算法:BM 算法(二)
14-8 字符串匹配算法:KMP 算法(一)
14-9 字符串匹配算法:KMP 算法(二)
14-10 字典树
14-11 力扣 208:实现 Trie(前缀树)
14-12 力扣 642:搜索自动补全系统

第15章 应用篇二:数据库中的数据结构【3.0小时】
15-1 缓存的概念
15-2 LRU 缓存算法
15-3 LFU 缓存算法
15-4 Redis Value 数据类型
15-5 MySQL 索引
15-6 B 树

第16章 应用篇三:海量数据处理【2.4小时】
16-1 海量数据处理课程内容
16-2 位图 (BitMap) 及其应用场景
16-3 代码实现 BitMap
16-4 2-BitMap
16-5 外部排序算法
16-6 多路归并排序算法及其代码实现
16-7 求 TopK 问题
16-8 哈希分治处理海量数据
16-9 布隆过滤器
16-10 海量数据处理总结

第17章 专题篇一:学透递归【6.5小时】
17-1 递归就该这么学习
17-2 栈:递归背后的那个女人
17-3 系统栈:从底层剖析函数调用
17-4 递归的意义:代码复用
17-5 递归的本质:函数调用
17-6 递归代码虽优雅,但性能差
17-7 一个经验带你轻松理解递归代码
17-8 【数组问题】也是可以用递归解决
17-9 递归求 n 的阶乘
17-10 为啥【尾递归】可以提升递归性能
17-11 链表具有天然的递归特点
17-12 三行代码优雅的【删除链表节点】
17-13 你会用递归【反转单链表】吗
17-14 练习:删除链表的倒数第N个节点
17-15 三行递归代码优雅的遍历二叉树
17-16 暴力美学算法:深度优先搜索(DFS)
17-17 两个经验教你解决二叉树98%的问题
17-18 多次递归调用:递归处理多叉树
17-19 从具体场景中抽象出对应的数据结构
17-20 DFS 可以解决 98%的图论问题
17-21 快速排序:数组问题抽象成二叉树
17-22 归并排序:数组问题抽象成二叉树
17-23 经典递归面试题:汉诺塔问题
17-24 递归实现的DFS体现了【回溯算法思想】
17-25 抽象能力很重要:全排列问题
17-26 动态规划和回溯算法之间的纠葛