![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 86
袁君(Louis)
这个作者很懒,什么都没留下…
展开
-
数据结构与算法:1. 随处可见的红黑树
因为key-value是一个强查找的过程,kv结构有下面这几种。红黑树在插入任何一个结点之前,他已经是一个红黑树。原创 2023-02-12 15:16:39 · 131 阅读 · 0 评论 -
经典排序算法
经典排序算法冒泡排序插入排序选择排序归并排序快速排序堆排序计数排序冒泡排序时间复杂度O(N²)空间复杂度O(1)稳定排序原地排序算法流程:两层循环遍历数组依次对数组中的相邻元素进行比较,看是否满足大小关系如果不满足,就将这两个相邻元素交换值第一种写法,可以有一个优化,当数组已经有序的时候,可以直接跳出循环,不再继续执行void swap(int arr[], int i, int j) { int tmp = arr[i]; arr[i] = arr[j]原创 2021-06-28 21:15:50 · 283 阅读 · 1 评论 -
Mancher算法详解附带练习题
Mancher算法1. 介绍用来计算回文子串,用一个数组记录每个位置上,以当前位置为中心,往两边扩的最长回文半径2. 求回文子串长度有两种方法:方法一:暴力求解,无优化,以每个位置为中心,往两侧匹配。这个方法有一个缺陷,只能匹配奇数的时候,比如aba,如果是abba中间的两个b就匹配不上。解决方法是将每个字符中间都加上一个特殊字符#,任意字符都行,就算是字符串中存在的字符也是可以的然后字符串abba就会变成#a#b#b#a#,这时候再往两侧扩就不会出现错误方法二:Manche原创 2021-05-21 22:15:53 · 920 阅读 · 6 评论 -
KMP算法详解附带练习题
KMP算法1. 简单介绍KMP算法用作字符串匹配返回匹配成功字符串的起始位置,时间复杂度O(N)Java中自带indexOf函数,indexOf函数是KMP的优化版本,只优化了常数时间。2.next数组作用可以加速匹配的过程,不必暴力匹配next数组保存的是前缀字符串和后缀字符串最大匹配长度(不包含字符串本身)实现过程next[0]默认值为-1,人为规定,用于后续做判断next[1]=0,当i=1的时候,[0,i-1]范围内只有一个字符,所以前缀长度与后缀长度为0,因为前缀原创 2021-05-21 21:27:59 · 3984 阅读 · 0 评论