date structure
文章平均质量分 76
pursue_my_life
个人学习历程,感悟
展开
-
KMP 看毛片算法原理及其实现
kmp算法前言一、KMP是什么?二、最长公共前后缀三、Next 数组2.1 next 数组表示法12.2 next 数组表示法22.2 nextval 数组四 KMP 算法实现总结前言通常而言,进行字符串匹配有两种做法:暴力法KMP法如对于以下两个字符串:char *str = "bacbababadababacambabacaddababacasdsd";char *ptr = "ababaca";暴力匹配字符串时,我们从目标字符串str(假设长度为n)的第一个下标选取和ptr原创 2020-09-25 09:41:08 · 22003 阅读 · 1 评论 -
关于408时间复杂度习题计算的理解
关于时间复杂度的计算理解前言一、循环的 判定条件 没有主体变量的参与1.1 非递归程序1.1.1 最基础类型1.1.2 迷惑类型1.1.2.1 猜测+验证法1.1.2.2 级数求和1.2 递归程序二、循环的 判定条件 有主体变量的参与前言如果代码的执行最多总次数可以被表示为一个多项式。那么时间复杂度就是 保留最高次方、且去掉常数。之后的结果。 所以,求一段代码的时间复杂度,就是 得到关于次数 t 的多项式,再去掉常数和保留最高次方即可。 然而,求出 t 并不是那么容易的。要懂得如何从代原创 2020-09-05 22:12:09 · 2344 阅读 · 3 评论 -
SkipList源码实现的 拙劣剖析
什么是跳表?跳表是运用了 二分查找的规律,的一种“特殊的链表”。(如下图所示) 我们可以看到,我们搜寻从 header 开始,然后往后搜寻,过程中我们通过 1 级,2级…n 级索引大大的减少了遍历次数。是二分搜索思想的一种体现. 相比红黑树,SkipList 不光能实现其大多数功能,并且能在 区间遍历 这一功能上的效率上要 优于红黑树。 但是在 REDIS 的源码中不是这样的实现的...原创 2019-08-07 09:26:07 · 234 阅读 · 0 评论 -
c++模板实现二叉搜索树
讲解引用:http://lib.csdn.net/article/datastructure/9204BSTree.h#ifndef _BSTREE_#define _BSTREE_#define debug(); cout<<__LINE__<<endl;#include <iostream>using namespace std;templat...原创 2018-05-29 16:34:05 · 521 阅读 · 0 评论 -
最小生成树及其解决算法
有n个城市,每个城市距离不等 ,需要把他们连起来,要求从一个 城市可以走到所有其他的城市,且路的长度要求最少(权值最小)。 这个时候,就需要构造最小生成树了。(n个城市需要n-1条边)。 我们在这里介绍两种算法,每种算法都有自身的优势,我们放在最后讨论。解决方案(—)Kruskal算法构成生成树的准则有三条:<1> 必须只使用该网络中的边来构...原创 2018-04-27 00:30:47 · 1044 阅读 · 0 评论 -
Acm之最短路问题算法合集
最短路问题常见有以下这几种解法: 多源最短路: 1. Folyd (最容易实现) 单源最短路: 2. Dijkstra (用点进行松弛)(文字与图片来自啊哈算法) ...原创 2018-05-05 00:00:46 · 1505 阅读 · 0 评论 -
并查集 ——数组实现
并查集作用: 1. 用来合并集合元素,并确定结合数量,查寻元素属于哪个集合。 2. 在图结构里(图里的点便是元素),确定两点是否处于联通状态,应用举例: eg: 集合个数 Hdu 畅通工程 最小生成树 Hdu 还是畅通工程#include <iostream>#include &l...原创 2018-04-24 00:57:32 · 3330 阅读 · 1 评论 -
模板实现 双向循环链表c++
//List.h#ifndef __LIST__#define __LIST__#include <iostream>#define debug(); cout<<__LINE__<<endl;using namespace std;//带头节点的 模板化双向循环链表不需要destory ,因为在用的时候才会模板实例化//template <...原创 2018-04-23 22:32:33 · 192 阅读 · 0 评论 -
数据结构常见类型习题坑点
树( 一) 怎样通过 后序遍历 与 前序遍历 来确定树的结构并写出 前序遍历。口诀: 后序末尾必为根 , 根左一位必为子。 中序左右为两子。比如 中序:debac 后序:dabec 口诀得根为 c, c得一个儿子是 e, 且c在中序中无右儿子 中序中找口诀 e 得 左边只有一个 d, 右边有两个...原创 2018-04-30 13:32:21 · 891 阅读 · 0 评论