Logo
☆☆☆☆☆
0.0
Beginner
25h

C++编码面试中的数据结构

数据结构是计算机科学的基础核心内容之一,通常在开发高效程序时起到关键作用。因此,在行业面试中,数据结构也常被视为衡量计算机科学知识水平的重要标准。本课程详细回顾了所有常见的数据结构,并以C++实现层面的细节进行讲解,帮助读者全面掌握各种数据结构,从而能够更有效地运用它们来编写高质量代码!

10 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
C++编码面试中的数据结构
数据结构是计算机科学的基础核心内容之一,通常在开发高效程序时起到关键作用。因此,在行业面试中,数据结构也常被视为衡量计算机科学知识水平的重要标准。本课程详细回顾了所有常见的数据结构,并以C++实现层面的细节进行讲解,帮助读者全面掌握各种数据结构,从而能够更有效地运用它们来编写高质量代码!

Content

10 Lessons • 0 Quizzes • 0 Challenges

复杂度度量简介
  1. 1

    比较算法

  2. 2

    示例:测量单循环算法的时间复杂度

  3. 3

    示例:包含嵌套循环的算法的时间复杂度

  4. 4

    渐近分析与大O表示法简介

  5. 5

    其他常见的渐近符号及其为何大O符号占主导地位

  6. 6

    实用公式

  7. 7

    常见的时间复杂度情况

  8. 8

    挑战:嵌套循环加法的时间复杂度(Big O)

  9. 9

    解决方案:嵌套循环加法的时间复杂度(大O表示)

  10. 10

    挑战:包含减法的嵌套循环的时间复杂度(Big O)

  11. 11

    解决方案:嵌套循环中包含减法操作的时间复杂度分析

  12. 12

    挑战:包含乘法的嵌套循环的复杂度(Big O)

  13. 13

    解决方案:嵌套循环乘法操作的时间复杂度(大O表示)

  14. 14

    挑战:嵌套循环与乘法(基础)

  15. 15

    解决方案:嵌套循环与乘法(基础版)

  16. 16

    挑战:嵌套循环与乘法(中级)

  17. 17

    解决方案:嵌套循环与乘法(中级)

  18. 18

    挑战:嵌套循环与乘法(进阶)

  19. 19

    解决方案:嵌套循环与乘法(进阶)

  20. 20

    挑战:嵌套循环与乘法(专业版)

  21. 21

    解决方案:嵌套循环与乘法(专业版)

  22. 22

    复杂度测验:检验你对复杂度的理解

数组简介
  1. 1

    什么是数组?

  2. 2

    多维数组

  3. 3

    什么是向量?

  4. 4

    挑战:从数组中移除偶数整数

  5. 5

    解决方案:从数组中移除偶数整数

  6. 6

    挑战:合并两个有序数组

  7. 7

    解决方案:合并两个有序数组

  8. 8

    挑战:找出两个相加等于 K 的数

  9. 9

    解决方案:找出两个相加等于 K 的数

  10. 10

    挑战:除自身以外数组的乘积

  11. 11

    解决方案:除自身以外数组的乘积

  12. 12

    挑战:在数组中找到最小值

  13. 13

    解决方案:在数组中查找最小值

  14. 14

    挑战:数组中的第一个不重复整数

  15. 15

    解决方案:数组中第一个不重复的整数

  16. 16

    挑战:在数组中找到第二大的值

  17. 17

    解决方案:在数组中查找第二大的值

  18. 18

    挑战:旋转数组

  19. 19

    解决方案:旋转数组

  20. 20

    挑战:重新排列正负数值

  21. 21

    解决方案:重新排列正负数值

  22. 22

    挑战:将已排序数组重新排列为最大/最小形式

  23. 23

    解决方案:将已排序数组重新排列为最大/最小形式

  24. 24

    挑战:最大子数组

  25. 25

    解决方案:最大子数组

  26. 26

    数组测验:检验你对数组的理解

链表简介
  1. 1

    单链表(SLL)

  2. 2

    基本链表操作

  3. 3

    单链表插入

  4. 4

    单链表中的删除操作

  5. 5

    链表与数组

  6. 6

    双向链表(DLL)

  7. 7

    单链表与双链表

  8. 8

    挑战:尾部插入

  9. 9

    解决方案:尾部插入

  10. 10

    挑战:在单链表中搜索

  11. 11

    解决方案:在单链表中进行搜索

  12. 12

    挑战:按值删除

  13. 13

    解决方案:按值删除

  14. 14

    挑战:查找链表的长度

  15. 15

    解决方案:查找链表的长度

  16. 16

    挑战:反转链表

  17. 17

    解决方案:反转链表

  18. 18

    挑战:链表环

  19. 19

    解决方案:链表环

  20. 20

    挑战:链表的中间节点

  21. 21

    解决方案:链表的中间节点

  22. 22

    挑战:从链表中删除重复项

  23. 23

    解决方案:从链表中删除重复项

  24. 24

    挑战:链表的并集与交集

  25. 25

    解决方案:链表的并集与交集

  26. 26

    挑战:返回倒数第 N 个节点

  27. 27

    解决方案:返回倒数第 N 个节点

  28. 28

    挑战:判断一个双向链表是否为回文

  29. 29

    解决方案:判断一个双向链表是否为回文

  30. 30

    链表测验:检验你对链表的理解

栈与队列简介
  1. 1

    栈(Stack)

  2. 2

    栈(实现)

  3. 3

    队列(Queue)

  4. 4

    队列(实现)

  5. 5

    挑战:使用队列生成从 1 到 n 的二进制数

  6. 6

    解决方案:使用队列生成从 1 到 n 的二进制数

  7. 7

    挑战:使用一个数组实现两个栈

  8. 8

    解决方案:使用一个数组实现两个栈

  9. 9

    挑战:反转队列的前 k 个元素

  10. 10

    解决方案:反转队列的前 k 个元素

  11. 11

    挑战:使用栈实现队列

  12. 12

    解决方案:使用栈实现队列

  13. 13

    挑战:对栈中的值进行排序

  14. 14

    解决方案:对栈中的值进行排序

  15. 15

    挑战:使用栈计算后缀表达式

  16. 16

    解决方案:使用栈计算后缀表达式

  17. 17

    挑战:使用栈寻找下一个更大元素

  18. 18

    解决方案:使用栈寻找下一个更大元素

  19. 19

    挑战:寻找名人

  20. 20

    解决方案:寻找名人

  21. 21

    挑战:有效的括号

  22. 22

    解决方案:有效的括号

  23. 23

    挑战:最小栈

  24. 24

    解决方案:最小栈

  25. 25

    栈/队列测验:检验你对栈/队列的理解

图论简介
  1. 1

    图的基本概念

  2. 2

    图的类型

  3. 3

    图的表示

  4. 4

    图的实现

  5. 5

    图操作的复杂度

  6. 6

    什么是二分图?

  7. 7

    图遍历算法

  8. 8

    挑战:实现广度优先搜索

  9. 9

    解决方案:实现广度优先搜索

  10. 10

    挑战:实现深度优先搜索

  11. 11

    解决方案:实现深度优先搜索

  12. 12

    挑战:检测有向图中的环

  13. 13

    解决方案:检测有向图中的环

  14. 14

    挑战:在有向图中找到一个母顶点

  15. 15

    解决方案:在有向图中寻找一个母顶点

  16. 16

    挑战:计算无向图中的边数

  17. 17

    解决方案:计算无向图中的边数

  18. 18

    挑战:检查两点之间是否存在路径

  19. 19

    解决方案:检查两点之间是否存在路径

  20. 20

    挑战:图是否为有效树

  21. 21

    解决方案:有效的树

  22. 22

    挑战:寻找两个顶点之间的最短路径

  23. 23

    解决方案:寻找两个顶点之间的最短路径

  24. 24

    挑战:从有向图中移除一条边

  25. 25

    解决方案:从有向图中移除一条边

  26. 26

    图论测验:检验你对图的理解

树结构简介
  1. 1

    树的基本概念与基本性质介绍

  2. 2

    什么是二叉树?

  3. 3

    什么是“平衡树”?

  4. 4

    关于完全二叉树的更多内容

  5. 5

    倾斜二叉树

  6. 6

    什么是二叉搜索树?(concept)

  7. 7

    在 C++ 中实现二叉搜索树

  8. 8

    二叉搜索树插入

  9. 9

    二叉搜索树插入(实现)

  10. 10

    在二叉搜索树中进行搜索(实现)

  11. 11

    二叉搜索树中的删除操作

  12. 12

    二叉搜索树中的删除操作(实现)

  13. 13

    前序遍历

  14. 14

    后序遍历

  15. 15

    中序遍历

  16. 16

    AVL树是一种自平衡的二叉搜索树,其中任意节点的左右子树高度差不超过1。这种特性确保了树的高度始终保持在O(log n)级别,从而保证了查找、插入和删除操作的时间复杂度均为O(log n)。AVL树通过在插入或删除节点后进行旋转操作(左旋、右旋或双旋)来维持平衡。

  17. 17

    AVL 插入

  18. 18

    AVL 删除

  19. 19

    什么是红黑树?(concept)

  20. 20

    红黑树插入

  21. 21

    红黑树删除

  22. 22

    2-3树是一种自平衡的树数据结构,其中每个节点可以包含1个或2个键,并且有2个或3个子节点。它保证了树的高度始终为对数级别,从而确保查找、插入和删除操作的时间复杂度为O(log n)。2-3树的特性包括: - 每个内部节点要么有两个子节点(含一个键),要么有三个子节点(含两个键)。 - 所有叶子节点位于同一层,即树是完全平衡的。 - 键在节点中按顺序排列,左子树的所有键小于根键,右子树的所有键大于根键。 - 插入和删除操作会通过分裂或合并节点来保持树的平衡。 2-3树是红黑树的一种等价形式,常用于实现高效的搜索和动态数据管理。

  23. 23

    2-3 插入

  24. 24

    2-3 树删除操作(情况 #1)

  25. 25

    2-3 删除操作(情况 #2)

  26. 26

    2-3-4 树

  27. 27

    树结构概述

  28. 28

    挑战:在二叉搜索树中查找最小值

  29. 29

    解决方案:在二叉搜索树中查找最小值

  30. 30

    挑战:在二叉搜索树中找到第 k 大的值

  31. 31

    解决方案:在二叉搜索树中查找第 k 大的值

  32. 32

    挑战:在二叉搜索树中查找指定节点的祖先节点

  33. 33

    解决方案:在二叉搜索树中查找指定节点的祖先

  34. 34

    挑战:求二叉搜索树的高度

  35. 35

    解决方案:求二叉搜索树的高度

  36. 36

    挑战:查找距离根节点为 k 的节点

  37. 37

    解决方案:查找与根节点距离为 k 的节点

  38. 38

    树结构测验:检验你对树的理解

Trie
  1. 1

    什么是Trie?

  2. 2

    Trie 的结构

  3. 3

    在 Trie 中插入数据

  4. 4

    在字典树中搜索

  5. 5

    Trie 中的删除操作

  6. 6

    挑战:字典树中的总单词数

  7. 7

    解决方案:字典树中的总单词数

  8. 8

    挑战:在字典树中查找所有存储的单词

  9. 9

    解决方案:在字典树中查找所有存储的单词

  10. 10

    挑战:使用字典树对数组进行排序

  11. 11

    解决方案:使用字典树进行数组排序

  12. 12

    挑战:使用字典树(Trie)进行单词构造

  13. 13

    解决方案:使用字典树(Trie)进行单词构造

  14. 14

    Trie测验:检验你对Trie的理解

堆简介
  1. 1

    堆的基本概念与性质

  2. 2

    最大堆:简介

  3. 3

    最大堆(实现)

  4. 4

    最小堆:简介

  5. 5

    最小堆(实现)

  6. 6

    挑战:将最大堆转换为最小堆

  7. 7

    解决方案:将最大堆转换为最小堆

  8. 8

    挑战:在数组中找到最小的 k 个元素

  9. 9

    解决方案:在数组中找到前 k 个最小元素

  10. 10

    挑战:在数组中找到最大的 K 个元素

  11. 11

    解决方案:在数组中找到前 K 个最大元素

  12. 12

    堆测验:检验你对堆的理解

哈希简介
  1. 1

    哈希表介绍

  2. 2

    哈希函数

  3. 3

    哈希表中的冲突

  4. 4

    从零开始构建哈希表

  5. 5

    哈希表的添加/删除与查找(实现)

  6. 6

    哈希表快速概览

  7. 7

    Trie 与哈希表

  8. 8

    unordered_map 与 unordered_set 的区别

  9. 9

    挑战:一个数组作为另一个数组的子集

  10. 10

    解决方案:一个数组作为另一个数组的子集

  11. 11

    挑战:检查数组是否互不相交

  12. 12

    解决方案:检查数组是否互不相交

  13. 13

    挑战:在数组中查找对称的数对

  14. 14

    解决方案:在数组中查找对称的数对

  15. 15

    挑战:追踪旅程的完整路径

  16. 16

    解决方案:追踪旅程的完整路径

  17. 17

    挑战:在数组中找到两对数,使得 a + b = c + d

  18. 18

    解决方案:在数组中找出两对数,使得 a + b = c + d

  19. 19

    挑战:和为 0 的子数组

  20. 20

    解决方案:和为 0 的子数组

  21. 21

    挑战:使用哈希表进行单词构造

  22. 22

    解决方案:使用哈希表进行单词构造

  23. 23

    挑战:寻找两个相加等于 k 的数——哈希法

  24. 24

    解决方案:找出两个相加等于 k 的数——哈希法

  25. 25

    挑战:数组中的第一个非重复整数——哈希

  26. 26

    解决方案:数组中第一个不重复的整数——哈希法

  27. 27

    挑战:链表环——哈希法

  28. 28

    解决方案:链表环检测——哈希表法

  29. 29

    挑战:通过哈希表从链表中删除重复项

  30. 30

    解决方案:从链表中删除重复项——哈希表

  31. 31

    挑战:链表的并集与交集 — 哈希表

  32. 32

    解决方案:链表的并集与交集 —— 哈希表

  33. 33

    哈希测验:检验你对哈希的理解

数据结构概述
  1. 1

    线性与非线性数据结构概述

  2. 2

    结论

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)