自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 KMP算法:计算三种next数组

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth、J.H.Morris和V.R.Pratt提出,因此也被称为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现是通过一个next数组实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度为O(m+n),其中m为模式串的长度,n为主串的长度。相较于暴力算法,KMP算法在处理长字符串时具有更高的效率。

2023-09-09 14:28:18 1626

原创 队列、循环队列、单调队列

队列类似于栈,也是一种受限制的线性表,只允许在一段插入另一端删除,因此队列的特性为。插入元素被称为入队,删除元素被称为出队。如下图为队列的逻辑结构。队列与栈一样可以用链式结构和数组来模拟,两者都需要头指针和尾指针来确定队列的首尾。初始时设定队头与队尾都为0(后面判断队列为空也可以使用队头队尾是否相同来),当有元素插入时,元素插入队尾出然后队尾后移;当有元素出队时,队头指针后移即可。

2023-08-23 23:11:17 49

原创 栈、共享栈、单调栈

栈可以理解为是一种受约束的线性表或链表,他们都是线性存储的,但是栈必须满足。与单链表类似,栈可以使用数组模拟和链式存储,数组模拟通常以数组,而链式则以。如下所示,左边为数组模拟栈的逻辑结构,右边为链式存储栈的逻辑结构,由于栈只进行头部操作,因此是否使用头结点效果一样。栈的一切操作都与top指针有关。如下图1所示,当创建栈时初始化该数据结构,将top指针指向-1的位置如图2~6所示,分别表示使用栈进行入栈出栈操作,这两种操作都是让指针进行上下移动来完成此项操作的。

2023-08-16 23:30:18 73 1

原创 结构体链表与数组模拟链表

链表分为单链表、双向链表和循环链表,这三种数据结构本质上就是指针的灵活使用,只要理解了单链表的一些操作,那么剩下两种也能快速掌握。单链表的每一个节点不同于数组是连续的,。单链表通常由一个头指针指向单链表的第一个节点,每个节点通常是一个结构体,结构体内部包含一个指针,该指针指向下一个地址。在初始化创建单链表时有两种方式,一种是不包含头结点的(上方),一种是包含头结点的(下方)。

2023-08-14 00:42:23 209

原创 时间复杂度计算

王道中有三重循环的题,可以将三重循环建立在空间坐标轴上,将它们理解为i是变量确定j,j确定后再确定k,那么由线到i-j组成等腰直角三角形,再到i-j-k行程单三棱柱。如下代码,两者皆是单循环,但是时间复杂度不同,第一个由于循环次数是已知的,因此时间复杂度是O(1),而后者时间复杂度是O(n)。如下所示,其递归形成的数据结构可以理解为单链表,所以叶子数为1,层数为n,f(n)=n时间复杂度为O(满足一下的形式可以使用主定理,其中当n是常数时时间复杂度为O(1),n大于该常数时带入公式。

2023-08-11 23:43:33 439 1

原创 python容器:list,tuple,str,set,dict

下标索引类似数组的使用,直接使用[idx]来调用某一个值,其中idx是在有序容器的范围从0开始到n-1个元素正向取,如果想要反向取,则从-1开始到-n。切片操作类似一个循环,从起点到终点取出数据:[起始位置:终止位置:步长],其中终止位置是不会取到的,步长默认为1,如果为负数那么前面两个参数也要倒着取。replace(旧字符串,新字符串),该函数就是创建一个新的数组,因此需要接收返回值,同时原数组不变。字符串是不允许被修改的,其中和list一样可以用下标索引,index,len,count操作。

2023-04-21 16:45:34 87 1

原创 树状数组的三种操作+例题应用

在写算法题时进场能碰到要求求一段区间的数据和或者修改区间内某一个数据,如果使用数组纯累加的话,求和:O(N),修改:O(1),如果有多组查询可能会TLE。而前缀和刚好相反,求和:O(1),修改:O(N),同样的如果遇到多组修改依然容易TLE。而树状数组刚好是一种折中的数据结构,它让求和与修改的时间复杂度都为O(logN)。区间查询,单点修改;区间修改,单点查询;区间修改,区间查询。

2023-03-19 14:00:03 306

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除