Content
10 Lessons • 0 Quizzes • 0 Challenges
复杂度度量简介
- 1
比较算法
- 2
示例:测量单循环算法的时间复杂度
- 3
示例:包含嵌套循环的算法的时间复杂度
- 4
渐近分析与大O表示法简介
- 5
其他常见的渐近符号及其为何大O符号占主导地位
- 6
实用公式
- 7
常见的时间复杂度情况
- 8
挑战:嵌套循环加法的时间复杂度(Big O)
- 9
解决方案:嵌套循环加法的时间复杂度(大O表示)
- 10
挑战:包含减法的嵌套循环的时间复杂度(Big O)
- 11
解决方案:嵌套循环中包含减法操作的时间复杂度分析
- 12
挑战:包含乘法的嵌套循环的复杂度(Big O)
- 13
解决方案:嵌套循环乘法操作的时间复杂度(大O表示)
- 14
挑战:嵌套循环与乘法(基础)
- 15
解决方案:嵌套循环与乘法(基础版)
- 16
挑战:嵌套循环与乘法(中级)
- 17
解决方案:嵌套循环与乘法(中级)
- 18
挑战:嵌套循环与乘法(进阶)
- 19
解决方案:嵌套循环与乘法(进阶)
- 20
挑战:嵌套循环与乘法(专业版)
- 21
解决方案:嵌套循环与乘法(专业版)
- 22
复杂度测验:检验你对复杂度的理解
数组简介
- 1
什么是数组?
- 2
多维数组
- 3
什么是向量?
- 4
挑战:从数组中移除偶数整数
- 5
解决方案:从数组中移除偶数整数
- 6
挑战:合并两个有序数组
- 7
解决方案:合并两个有序数组
- 8
挑战:找出两个相加等于 K 的数
- 9
解决方案:找出两个相加等于 K 的数
- 10
挑战:除自身以外数组的乘积
- 11
解决方案:除自身以外数组的乘积
- 12
挑战:在数组中找到最小值
- 13
解决方案:在数组中查找最小值
- 14
挑战:数组中的第一个不重复整数
- 15
解决方案:数组中第一个不重复的整数
- 16
挑战:在数组中找到第二大的值
- 17
解决方案:在数组中查找第二大的值
- 18
挑战:旋转数组
- 19
解决方案:旋转数组
- 20
挑战:重新排列正负数值
- 21
解决方案:重新排列正负数值
- 22
挑战:将已排序数组重新排列为最大/最小形式
- 23
解决方案:将已排序数组重新排列为最大/最小形式
- 24
挑战:最大子数组
- 25
解决方案:最大子数组
- 26
数组测验:检验你对数组的理解
链表简介
- 1
单链表(SLL)
- 2
基本链表操作
- 3
单链表插入
- 4
单链表中的删除操作
- 5
链表与数组
- 6
双向链表(DLL)
- 7
单链表与双链表
- 8
挑战:尾部插入
- 9
解决方案:尾部插入
- 10
挑战:在单链表中搜索
- 11
解决方案:在单链表中进行搜索
- 12
挑战:按值删除
- 13
解决方案:按值删除
- 14
挑战:查找链表的长度
- 15
解决方案:查找链表的长度
- 16
挑战:反转链表
- 17
解决方案:反转链表
- 18
挑战:链表环
- 19
解决方案:链表环
- 20
挑战:链表的中间节点
- 21
解决方案:链表的中间节点
- 22
挑战:从链表中删除重复项
- 23
解决方案:从链表中删除重复项
- 24
挑战:链表的并集与交集
- 25
解决方案:链表的并集与交集
- 26
挑战:返回倒数第 N 个节点
- 27
解决方案:返回倒数第 N 个节点
- 28
挑战:判断一个双向链表是否为回文
- 29
解决方案:判断一个双向链表是否为回文
- 30
链表测验:检验你对链表的理解
栈与队列简介
- 1
栈(Stack)
- 2
栈(实现)
- 3
队列(Queue)
- 4
队列(实现)
- 5
挑战:使用队列生成从 1 到 n 的二进制数
- 6
解决方案:使用队列生成从 1 到 n 的二进制数
- 7
挑战:使用一个数组实现两个栈
- 8
解决方案:使用一个数组实现两个栈
- 9
挑战:反转队列的前 k 个元素
- 10
解决方案:反转队列的前 k 个元素
- 11
挑战:使用栈实现队列
- 12
解决方案:使用栈实现队列
- 13
挑战:对栈中的值进行排序
- 14
解决方案:对栈中的值进行排序
- 15
挑战:使用栈计算后缀表达式
- 16
解决方案:使用栈计算后缀表达式
- 17
挑战:使用栈寻找下一个更大元素
- 18
解决方案:使用栈寻找下一个更大元素
- 19
挑战:寻找名人
- 20
解决方案:寻找名人
- 21
挑战:有效的括号
- 22
解决方案:有效的括号
- 23
挑战:最小栈
- 24
解决方案:最小栈
- 25
栈/队列测验:检验你对栈/队列的理解
图论简介
- 1
图的基本概念
- 2
图的类型
- 3
图的表示
- 4
图的实现
- 5
图操作的复杂度
- 6
什么是二分图?
- 7
图遍历算法
- 8
挑战:实现广度优先搜索
- 9
解决方案:实现广度优先搜索
- 10
挑战:实现深度优先搜索
- 11
解决方案:实现深度优先搜索
- 12
挑战:检测有向图中的环
- 13
解决方案:检测有向图中的环
- 14
挑战:在有向图中找到一个母顶点
- 15
解决方案:在有向图中寻找一个母顶点
- 16
挑战:计算无向图中的边数
- 17
解决方案:计算无向图中的边数
- 18
挑战:检查两点之间是否存在路径
- 19
解决方案:检查两点之间是否存在路径
- 20
挑战:图是否为有效树
- 21
解决方案:有效的树
- 22
挑战:寻找两个顶点之间的最短路径
- 23
解决方案:寻找两个顶点之间的最短路径
- 24
挑战:从有向图中移除一条边
- 25
解决方案:从有向图中移除一条边
- 26
图论测验:检验你对图的理解
树结构简介
- 1
树的基本概念与基本性质介绍
- 2
什么是二叉树?
- 3
什么是“平衡树”?
- 4
关于完全二叉树的更多内容
- 5
倾斜二叉树
- 6
什么是二叉搜索树?(concept)
- 7
在 C++ 中实现二叉搜索树
- 8
二叉搜索树插入
- 9
二叉搜索树插入(实现)
- 10
在二叉搜索树中进行搜索(实现)
- 11
二叉搜索树中的删除操作
- 12
二叉搜索树中的删除操作(实现)
- 13
前序遍历
- 14
后序遍历
- 15
中序遍历
- 16
AVL树是一种自平衡的二叉搜索树,其中任意节点的左右子树高度差不超过1。这种特性确保了树的高度始终保持在O(log n)级别,从而保证了查找、插入和删除操作的时间复杂度均为O(log n)。AVL树通过在插入或删除节点后进行旋转操作(左旋、右旋或双旋)来维持平衡。
- 17
AVL 插入
- 18
AVL 删除
- 19
什么是红黑树?(concept)
- 20
红黑树插入
- 21
红黑树删除
- 22
2-3树是一种自平衡的树数据结构,其中每个节点可以包含1个或2个键,并且有2个或3个子节点。它保证了树的高度始终为对数级别,从而确保查找、插入和删除操作的时间复杂度为O(log n)。2-3树的特性包括: - 每个内部节点要么有两个子节点(含一个键),要么有三个子节点(含两个键)。 - 所有叶子节点位于同一层,即树是完全平衡的。 - 键在节点中按顺序排列,左子树的所有键小于根键,右子树的所有键大于根键。 - 插入和删除操作会通过分裂或合并节点来保持树的平衡。 2-3树是红黑树的一种等价形式,常用于实现高效的搜索和动态数据管理。
- 23
2-3 插入
- 24
2-3 树删除操作(情况 #1)
- 25
2-3 删除操作(情况 #2)
- 26
2-3-4 树
- 27
树结构概述
- 28
挑战:在二叉搜索树中查找最小值
- 29
解决方案:在二叉搜索树中查找最小值
- 30
挑战:在二叉搜索树中找到第 k 大的值
- 31
解决方案:在二叉搜索树中查找第 k 大的值
- 32
挑战:在二叉搜索树中查找指定节点的祖先节点
- 33
解决方案:在二叉搜索树中查找指定节点的祖先
- 34
挑战:求二叉搜索树的高度
- 35
解决方案:求二叉搜索树的高度
- 36
挑战:查找距离根节点为 k 的节点
- 37
解决方案:查找与根节点距离为 k 的节点
- 38
树结构测验:检验你对树的理解
Trie
- 1
什么是Trie?
- 2
Trie 的结构
- 3
在 Trie 中插入数据
- 4
在字典树中搜索
- 5
Trie 中的删除操作
- 6
挑战:字典树中的总单词数
- 7
解决方案:字典树中的总单词数
- 8
挑战:在字典树中查找所有存储的单词
- 9
解决方案:在字典树中查找所有存储的单词
- 10
挑战:使用字典树对数组进行排序
- 11
解决方案:使用字典树进行数组排序
- 12
挑战:使用字典树(Trie)进行单词构造
- 13
解决方案:使用字典树(Trie)进行单词构造
- 14
Trie测验:检验你对Trie的理解
堆简介
- 1
堆的基本概念与性质
- 2
最大堆:简介
- 3
最大堆(实现)
- 4
最小堆:简介
- 5
最小堆(实现)
- 6
挑战:将最大堆转换为最小堆
- 7
解决方案:将最大堆转换为最小堆
- 8
挑战:在数组中找到最小的 k 个元素
- 9
解决方案:在数组中找到前 k 个最小元素
- 10
挑战:在数组中找到最大的 K 个元素
- 11
解决方案:在数组中找到前 K 个最大元素
- 12
堆测验:检验你对堆的理解
哈希简介
- 1
哈希表介绍
- 2
哈希函数
- 3
哈希表中的冲突
- 4
从零开始构建哈希表
- 5
哈希表的添加/删除与查找(实现)
- 6
哈希表快速概览
- 7
Trie 与哈希表
- 8
unordered_map 与 unordered_set 的区别
- 9
挑战:一个数组作为另一个数组的子集
- 10
解决方案:一个数组作为另一个数组的子集
- 11
挑战:检查数组是否互不相交
- 12
解决方案:检查数组是否互不相交
- 13
挑战:在数组中查找对称的数对
- 14
解决方案:在数组中查找对称的数对
- 15
挑战:追踪旅程的完整路径
- 16
解决方案:追踪旅程的完整路径
- 17
挑战:在数组中找到两对数,使得 a + b = c + d
- 18
解决方案:在数组中找出两对数,使得 a + b = c + d
- 19
挑战:和为 0 的子数组
- 20
解决方案:和为 0 的子数组
- 21
挑战:使用哈希表进行单词构造
- 22
解决方案:使用哈希表进行单词构造
- 23
挑战:寻找两个相加等于 k 的数——哈希法
- 24
解决方案:找出两个相加等于 k 的数——哈希法
- 25
挑战:数组中的第一个非重复整数——哈希
- 26
解决方案:数组中第一个不重复的整数——哈希法
- 27
挑战:链表环——哈希法
- 28
解决方案:链表环检测——哈希表法
- 29
挑战:通过哈希表从链表中删除重复项
- 30
解决方案:从链表中删除重复项——哈希表
- 31
挑战:链表的并集与交集 — 哈希表
- 32
解决方案:链表的并集与交集 —— 哈希表
- 33
哈希测验:检验你对哈希的理解
数据结构概述
- 1
线性与非线性数据结构概述
- 2
结论
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Course Author:Anonymous User