基础算法

优化搜索

IDDFS Interative Deepening Depth-First Search 迭代加深搜索。 与普通的 DFS 的区别在于,IDDFS

二分中的边界处理

二分作为一种常见的算法,应用非常普遍,相信一个成熟的程序员应付一个二分的题目不成问题。不过应该大多数程序员对二分中如何处理边界的问题非常头疼(遇到二分的问题应该经常调试吧)。 我们现在仔细的研究一下,做一点理论上的东西(理论,服务于实用)。 有序数组之上

正则零宽断言

正则的最终目的是匹配,考虑这样一种情况,我们需要将一个字符串从特定的位置进行分割,不过这个位置比较特殊,它不是一个字符,而是某个特定字符串的前面(或者后面)。 那么我们需要使用零宽正向先行(后行)断言。

java 优先队列的顺序

PriorityQueue 是 java.util 包中一个常用的堆排序数据结构,初始化时需要传入一个 Comparator 接口实现。 由于我经常忘记 java

红黑树的插入操作

插入 向仅有根节点的红黑树插入新节点 如果新键值小于老键值,直接通过红色链接增加一个节点 如果新键值大于老键值,通过红色链接插入节点会产生一条红色右链接,这时候左旋即可 向2-节点插入新节点 2-节点没有与之相连的红链接 这会在红黑树的叶子节点上插入一个新的节点,

红黑树简介及基础操作

准确的名字是红黑二叉查找树 红黑树是2-3树的变体,用一棵二叉树去表示一棵2-3树 红黑树到2-3树 将红黑树中的链接分为两种 * 红链接:将2个2-节点连在一起,表示一个3-节点(注意,为了保持通过红链接相连的节点的有序性,

2-3 查找树

之所以叫2-3查找树是因为一个节点可以含有2条或3条链接(每个链接需要用一个键值隔开,所以2-3查找树中的每个节点可以含有1或2个键值)。 2-3查找树的插入 和二叉查找树一样,首先需要进行一次查找,获得新的键值的插入位置。 插入的节点为2-节点 只需将新的键值加入到2-节点中,使其成为3节点。