自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高频基础算法——并查集(图解关键操作)与经典应用详解

先看暴力做法:假如有个10000的数的集合与一个200的数的集合,要么将前者的每个数编号改变下,要么将后者编号改变,无论那种都会取决数据的规模,一般这种题就会卡你时间而且会有局端数据存在,肯定就超时了。基本原理:每个集合用一个树来表示。树根的编号就是整个集合的编号。每个节点存储它的父节点,p[x]的值 表示 x 的父节点。

2024-11-20 21:45:14 771

原创 基础算法——详细解析Trie树的数组模拟与典型应用!

N为最多节点的数目,就是字符串的最大长度;son[N][26]存储每个节点的所有儿子。一维是结点总数(等价字符串长度),因为字符串中只包含小写字母,因此每个节点最多有26个子节点;cnt[N],是以当前节点结尾的单词有多少个; 从根节点p = 0开始,如果当前节点上不存在这个字母就创建一个,也就是将 son[0][字符编号] == ++idx,那当前这个p节点就存在下一个节点了,让p = son[p][u]。如果存在 p 就走到 存在的那个字母节点上,再看下一个节点是否存在,就这样循环往复,直到遍历完字

2024-11-19 21:47:52 704

原创 基础算法——离散化

【代码】基础算法——离散化。

2024-11-18 22:04:15 161

原创 基础算法——图解带你深刻理解KMP匹配

两层for循环判断 i从0开始遍历较长字符串 S,j每次从1开始遍历模式字符串 P。遇到相同字符 j ++ ,不同内层循环中断,外层循环继续。这样在我们发现 在S[i] 与 P[j + 1]不相等时,直接让 j 指向 next[j] 的位置避免掉 1 到 B的重复比较 (下图帮助理解)P中存在一个以 j指针为终点的 长度为 B 的字符串与 从 P的起始点开始的 长度也为 B 的字字符串相等。假设两字符串长度为n。那么时间复杂度O(n2)。这在算法题中肯定是超时的,因为题目一般会设置较大数据量。

2024-11-18 21:36:20 819

原创 基础算法——单调栈和单调队列的最常用考法

i指针每往右边移动时,把每个数存到栈里,把目光放到栈里,将数在栈中操作,这样每个数操作一次就行了,整体时间复杂度就是O(n)给定一个序列,求序列当中每一个数左边离他最近的数,且比他小(大)的数在什么地方,对称下就可类比为右边最近比他(大或小的数)。两重循环,i枚举每个数,j从 i-1开始往左边找第一个比a[i]小的,时间复杂度为O(n2),很大可能会超时。单调栈和单调队列虽然有点抽象但在算法题中很少涉题。

2024-11-17 22:10:56 412

原创 基础算法——栈的静态数组模拟实现与经典应用

经典应用——中缀表达式求值 相比于,使用cpp中自带的栈,模拟栈能在数据量小于 10的5次方时 “微快” 创作不易,多多点赞支持,感谢大家啦

2024-11-17 17:09:26 261

原创 基础算法——双链表的静态数组实现

和单链表十分相似,就是连接时多了向前链接的操作,时间复杂度O(1).

2024-11-16 18:09:37 339

原创 基础算法——单链表的静态数组实现

单链表静态数组实现详解

2024-11-16 17:16:20 214

空空如也

空空如也

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

TA关注的人

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