算法——查找算法
哈希、红黑树、B+树、二叉树、平衡算法
搜索算法
二分查找二分查找一定是有序的:target ? (left+right)/2
如果说二分查找转换成数据结构展示——>==二叉树—->二叉查找树、二叉搜索树==
二叉搜索树1. 时间复杂度:二分:log(n)
AVL树:平衡二叉树红黑树(特殊的二叉查找树)这篇文章还在编辑中······
本文结束!
Manacher算法
Manacher算法
求最长子回文串
转载声明:@刘毅 (Ethson Liu)
算法过程分析由于回文分为偶回文(比如 bccb)和奇回文(比如 bcacb),而在处理奇偶问题上会比较繁琐,所以这里我们使用一个技巧,具体做法是:
在字符串首尾及每个字符间都插入一个 “#”,这样可以使得原先的奇偶回文都变为奇回文;
接着再在首尾两端各插入 “$” 和 “^”,这样中心扩展寻找回文的时候会自动退出循环,不需每次判断是否越界,可参见下面代码。
上述新插入的三个字符,即 “#”、 “$” 和 “^”,必须各异,且不可以与原字符串中的字符相同。
举个例子:s="abbahopxpo",转换为 s_new="$#a#b#b#a#h#o#p#x#p#o#^"。如此,s 里起初有一个偶回文 abba 和一个奇回文 opxpo,被转换为 #a#b#b#a# 和 #o#p#x#p#o#,长度都转换成了奇数。
定义一个辅助数组 int p[],其中 p[i] 表示以 i 为中心的最长回文的半径,例如:
i
0
1
2
3
4
5
6
7
8
9
10 ...
红黑树🌲
R-B Tree🌲
R-B Tree,全称Red-Black Tree,又称为”红黑树”,一种特殊的二叉树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(black)
转载声明:https://www.cnblogs.com/skywang12345/p/3245399.html
红黑树的优势红黑是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决,而AVL是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多。所以红黑树的插入效率更高!!!
红黑树这种数据结构应用十分广泛,在多种编程语言中被用作符号表的实现,如:
Java中的java.util.TreeMap,java.util.TreeSet;
C++ STL中的:map,multimap,multiset;
.NET中的:SortedDictionary,SortedSet 等。
红黑树的特性(1) 每个节点或者是黑色,或者是红色
(2) 根节点是黑色
(3) 每个叶子节点(nil)是黑色
(4) 如果一个节点是红色的,则它的子节点必须 ...
链表
链表学习记录,若有不足请指出来
1 结点结构123456// Definition for singly-linked list.struct SinglyListNode { int val; SinglyListNode *next; SinglyListNode(int x) : val(x), next(NULL) {}};
2 操作与数组不同,我们无法在常量时间内访问单链表中的随机元素。 如果我们想要获得第 i 个元素,我们必须从头结点逐个遍历。 我们按索引来访问元素平均要花费O(N)时间,其中 N 是链表的长度。
添加操作-单链表
令插入结点的next为其插入位置下结点
原位置下一节点为要插入的结点即可
与数组不同,我们不需要将所有元素移动到插入元素之后。因此,您可以在 O(1) 时间复杂度中将新结点插入到链表中,这非常高效。
删除操作-单链表12//删除prev的下一结点prev->next == prev->next ->next;
删除第一个结点12SinglyListNode * ...
BFS和DFS算法(基础)
深度优先搜索算法和广度优先搜索算法
数据结构——栈和队列
栈栈的定义与运算
栈是只允许在线性表的一段进行插入和删除的线性表。表中值允许插入和删除的一段称为栈顶命令一段称为栈底。
由于只能在栈顶进行插入和删除操作,使得后进栈的元素先出栈,先进栈的元素后出栈,所以栈是一种后进先出(Last In First Out,简称LIFO)的数据结构。有关栈的应用都是基于这一特性。
栈的操作通常称为入栈或进栈,其删除操作称为出栈或退栈。当栈中五元素是,称为空栈。
有关栈的基本操作主要有以下几种:
1. 栈的初始化操作,即建立一个空栈S
2. 判空栈操作,弱S为空栈,返回一个真值
3. 进栈操作,在S栈顶插入一个元素X
4. 出栈操作,若栈S不空,则取栈顶元素(栈顶元素不删除)。
栈的顺序存储结构(又称为顺序栈)类似于线性表的顺序存储结构。
队列双队列实现栈的操作:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546class MyStack { queue<int> queue1; qu ...