数据结构与算法
其它
[[计算机网络]]
[[SQL]]
[[numpy]]
[[刷题笔记]]
[[语言相关]]
[[k8s]]
数据结构
[[Python内置库的数据结构]]
[[红黑树:自平衡的二叉搜索树]]
[[回溯算法]]
第一梯队(核心基础)
- 数组/链表
- 所有数据结构的底层基础,随机访问(数组) vs 快速增删(链表)。
- 哈希表(Hash Table)
- 高频用于快速查找(O(1)),如字典、缓存等。
- 字符串处理
- 涉及匹配、子串、反转等,是实际开发中最常见的数据形式。
第二梯队(算法基石)
- 栈(Stack) & 队列(Queue)
- 栈用于递归、括号匹配;队列用于BFS、任务调度。
- 堆(Heap)/优先队列(Priority Queue)[[堆]]
- 解决Top-K问题、Dijkstra算法等。
- 二叉树(Binary Tree)
- 递归思维的训练,衍生出二叉搜索树、AVL树、红黑树、B树等。
- 图(Graph)[[图]]
- 表示网络关系,但实际编码中直接使用的场景较少(更多考察算法如BFS/DFS)。
第三梯队(高级优化)
- 二叉搜索树(BST)
- 有序数据的高效操作(查找/插入O(log n)),但需平衡(如红黑树)。
- 并查集(Disjoint Set)[[并查集]]
- 解决连通性问题(如朋友圈、最小生成树)。
- 字典树(Trie)
- 处理字符串前缀匹配(如搜索提示)。
第四梯队(特定场景)
- 跳表(Skip List)
- 替代平衡树的概率数据结构(如Redis有序集合)。
- 线段树/树状数组
- 区间查询、动态统计问题。
- B树/B+树
- 数据库索引的核心结构。
- 布隆过滤器(Bloom Filter)
- 空间效率极高的概率型存在性检查。
算法
12.基础提升[[ KMP]]、Manacher算法等
13.基础提升 滑动窗口、[[单调栈]]结构等
7.详解前缀树和贪心算法 [[前缀和矩阵:快速子矩阵批量求和]]
14.基础提升 二叉树的Morris遍历等
[[二分查找]]
[[排序算法]]
[[递归]]
[[字符编码]]
反转红黑树?
哈希表如何转化为红黑树
[[二叉搜索树VS小顶堆]]
[[动态规划]]
[[回溯算法]]
[[最小栈、最大栈、双向支持的最小最大栈]]
[[LRU]]
牛客网在线编程_算法笔面试篇_很多算法与结构
补充说明
- 算法关联性:数据结构的重要性常取决于算法场景(如堆之于排序,图之于最短路径)。
- 实际开发:哈希表、字符串、数组/链表占日常开发的80%以上。
- 面试重点:二叉树、链表、堆、哈希表是面试高频考点。
逻辑结构:线性与非线性
- 线性数据结构:数组、链表、栈、队列、
哈希表,元素之间是一对一的顺序关系。 - 非线性数据结构:树、堆、图、哈希表。
非线性数据结构可以进一步划分为树形结构和网状结构。
- 树形结构:树、堆、哈希表,元素之间是一对多的关系。
- 网状结构:图,元素之间是多对多的关系。
物理结构:连续与分散
- 基于数组可实现:栈、队列、哈希表、树、堆、图、矩阵、张量(维度 的数组)等。
- 基于链表可实现:栈、队列、哈希表、树、堆、图等。
递归方法
如果循环时,循环嵌套的次数依赖于某个变量,应该使用递归的方法写代码,传递依赖的变量计数器
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Min的博客!
评论