序 - Hello 算法

其它

[[计算机网络]]
[[SQL]]
[[numpy]]
[[刷题笔记]]
[[语言相关]]
[[k8s]]

数据结构

[[Python内置库的数据结构]]
[[红黑树:自平衡的二叉搜索树]]
[[回溯算法]]

第一梯队(核心基础)

  1. 数组/链表
    • 所有数据结构的底层基础,随机访问(数组) vs 快速增删(链表)。
  2. 哈希表(Hash Table)
    • 高频用于快速查找(O(1)),如字典、缓存等。
  3. 字符串处理
    • 涉及匹配、子串、反转等,是实际开发中最常见的数据形式。

第二梯队(算法基石)

  1. 栈(Stack) & 队列(Queue)
    • 栈用于递归、括号匹配;队列用于BFS、任务调度。
  2. 堆(Heap)/优先队列(Priority Queue)[[堆]]
    • 解决Top-K问题、Dijkstra算法等。
  3. 二叉树(Binary Tree)
    • 递归思维的训练,衍生出二叉搜索树、AVL树、红黑树、B树等。
  4. 图(Graph)[[图]]
    • 表示网络关系,但实际编码中直接使用的场景较少(更多考察算法如BFS/DFS)。

第三梯队(高级优化)

  1. 二叉搜索树(BST)
    • 有序数据的高效操作(查找/插入O(log n)),但需平衡(如红黑树)。
  2. 并查集(Disjoint Set)[[并查集]]
    • 解决连通性问题(如朋友圈、最小生成树)。
  3. 字典树(Trie)
    • 处理字符串前缀匹配(如搜索提示)。

第四梯队(特定场景)

  1. 跳表(Skip List)
    • 替代平衡树的概率数据结构(如Redis有序集合)。
  2. 线段树/树状数组
    • 区间查询、动态统计问题。
  3. B树/B+树
    • 数据库索引的核心结构。
  4. 布隆过滤器(Bloom Filter)
    • 空间效率极高的概率型存在性检查。

算法

12.基础提升[[ KMP]]、Manacher算法等
13.基础提升 滑动窗口、[[单调栈]]结构等
7.详解前缀树和贪心算法 [[前缀和矩阵:快速子矩阵批量求和]]
14.基础提升 二叉树的Morris遍历等
[[二分查找]]
[[排序算法]]
[[递归]]
[[字符编码]]
反转红黑树?
哈希表如何转化为红黑树
[[二叉搜索树VS小顶堆]]
[[动态规划]]
[[回溯算法]]
[[最小栈、最大栈、双向支持的最小最大栈]]
[[LRU]]
牛客网在线编程_算法笔面试篇_很多算法与结构

补充说明

  • 算法关联性:数据结构的重要性常取决于算法场景(如堆之于排序,图之于最短路径)。
  • 实际开发:哈希表、字符串、数组/链表占日常开发的80%以上。
  • 面试重点:二叉树、链表、堆、哈希表是面试高频考点。

逻辑结构:线性与非线性

  • 线性数据结构:数组、链表、栈、队列、哈希表,元素之间是一对一的顺序关系。
  • 非线性数据结构:树、堆、图、哈希表。

非线性数据结构可以进一步划分为树形结构和网状结构。

  • 树形结构:树、堆、哈希表,元素之间是一对多的关系。
  • 网状结构:图,元素之间是多对多的关系。

物理结构:连续与分散

  • 基于数组可实现:栈、队列、哈希表、树、堆、图、矩阵、张量(维度  的数组)等。
  • 基于链表可实现:栈、队列、哈希表、树、堆、图等。

递归方法

如果循环时,循环嵌套的次数依赖于某个变量,应该使用递归的方法写代码,传递依赖的变量计数器