Skip to content

TAG_COLLECTION //

数据结构与算法

共有 24 篇笔记使用了这个 Tag。

二叉搜索树

简单来说,就是维护一个左子树的节点值 < 根节点值 < 右子树的节点值的二叉树。所以中序遍历之后就是一个升序排列的结果。

红黑树

一种自平衡的BST,具有如下性质—— 1. 每个节点不是红色就是黑色 2. 根节点必须是黑色。 3. 叶子节点(NIL 节点)被视为黑色。 4. 如果一个节点是红色,则它的两个子节点都是黑色。 5. 从任一节点到其所有后代 NIL 节点的简单路径都包含相同数目的黑色节点。

双指针

对于一个数组,使用left,right两根指针来扫描?(或许可以这么说)或许就是广义的双指针法子。

前缀和哈希

简单来说,就是用一个哈希表记录一下已经求过的前缀和出现次数(实际上或许存什么都行,本质上就是记录一下前缀和信息: prefix -> hash,前缀和作为key,然后value是我们需要维护的某种东西)

拓扑排序

假设存在一条有向边 A->B, 表示 B 的执行需要先依赖 A 的执行, 那么一整张图就表示一个完整的依赖关系(AoV 网),此时使用拓扑排序可以找到其中一种执行方式,可以按照依赖关系来执行完整个流程。

BVH

Bounding Volume Hierarchy,正常来说,对于一条 ray,我们需要查询空间中所有存在的几何面,这很贵,于是借助 BVH 对空间中存在的几何面先进行分层,快速地排除一部分不可能击中的面。

LeetCode 214

> 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 > > 示例 1: > 输入: s "aacecaaa" > 输出: "aaacecaaa" > > 示例 2: > 输入: s "abcd" > 输出: "dcbabcd" > > 提示: > -...

LeetCode 312 戳气球

> 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 > > 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] nums[i] nums[i + 1] 枚硬币。 这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号...

Sparse Set

像是咱 ECS 等都比较喜欢用的一种数据结构, 目的是希望在一个大的整数空间内, 我们有若干数据存活, 希望既可以做到 O(1) 的查找, 插入, 删除, 又可以快速的仅遍历存活元素.

Released under the MIT License.