
算法
文章平均质量分 76
介绍一些算法原理及使用
东皇太星
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
模运算(密码学/数论/算法)
模运算的概念模运算是一种算术运算,常写作a mod n,表示整数a除以正整数n后的余数。模数是模运算中的除数n,它决定了结果的范围。公式表达:对于任意整数a和正整数n,可以将a表示为:a = qn + r,其中0 ≤ r < n,q是整数商,即q = ⌊a/n⌋。a除以n的余数是a mod n。示例:11 mod 7 = 4(11除以7的余数是4)** -11 mod 7 = 3(-11除以7的余数是3)**原创 2025-08-27 17:18:45 · 190 阅读 · 0 评论 -
最短路径问题(图论)
三层遍历,第一层必须为中间层,这样才会逐步将中间层扩大,如果中间层没有放在第一层,会导致 每个f[x] 实际只会求取一次,结果不正确。求图中所有顶点之间的最短路径,包括有向图或者无向图,权重正负皆可,用来一次性求所有点之间的最短路径。递推公式,F[K][X][Y] 表示顶点x,y中间最多只经过(0,1,2,…k)这些顶点时的最短路径。原创 2025-08-22 17:47:50 · 341 阅读 · 0 评论 -
字符串匹配算法
4、因为p[0]到p[k-1] 等于 p[j-k]到p[j-1],所以上图中蓝2色块与蓝4色块相等的,现在又要找蓝1色块+黄1色块 等于蓝4色块+黄2色块,所以蓝1色块等于蓝2色块,也意味着我们在找p[k]左边的字符串的最长前缀后缀,而这正是next[k],是不是无巧不成书。3、我们现在要找到新的p[0]到p[k’-1] 等于 p[j-k’]到p[j-1],那么这个新的k怎么求呢?2、p[0]到p[k-1] 等于 p[j-k]到p[j-1]的,也就是图中最上面K个元素。原创 2025-08-13 22:01:01 · 658 阅读 · 0 评论 -
最小生成树(Kruskal算法和Prim算法)
现在假设有一个很实际的问题:我们要在n个城市中建立一个通信网络,则连通这n个城市需要布置n-1一条通信线路,这个时候我们需要考虑如何在成本最低的情况下建立这个通信网?于是我们就可以引入连通图来解决我们遇到的问题,n个城市就是图上的n个顶点,然后,边表示两个城市的通信线路,每条边上的权重就是我们搭建这条线路所需要的成本,所以现在我们有n个顶点的连通网可以建立不同的生成树,每一颗生成树都可以作为一个通信网,当我们构造这个连通网所花的成本最小时,搭建该连通网的生成树,就称为最小生成树。原创 2025-08-14 16:27:13 · 261 阅读 · 0 评论 -
树状数组/差分数组/线段树/莫队算法介绍
提供动态区间查询,即区间查询,单点修改,时间复杂度均为O(log n)原创 2025-08-19 20:02:15 · 311 阅读 · 0 评论 -
最长回文子串(马拉车/Manacher‘s )算法
求最长回文子串(马拉车/Manacher‘s )算法与字符匹配查找(kmp)算法介绍原创 2025-08-09 17:25:24 · 319 阅读 · 0 评论 -
单调栈原理与应用
单调栈(Monotonic Stack)是一种特殊的栈数据结构,其核心特性是栈中的元素始终保持单调递增或单调递减的顺序。依次遍历数组,如果出现栈顶元素小于当前元素,则循环弹出栈顶元素,直到遇到栈顶元素大于当前元素,则将当前元素入栈,可以用来快速计算第一个比当前元素大的元素值。依次遍历数组,如果出现栈顶元素大于当前元素,则循环弹出栈顶元素,直到遇到栈顶元素小于当前元素,则将当前元素入栈,可以用来快速计算第一个比当前元素小的元素值。:给定一个数组,为每个元素找到其右侧(或左侧)第一个比它大(或小)的元素。原创 2025-06-22 16:42:29 · 350 阅读 · 0 评论 -
稀疏表(Sparse Table,ST原理及应用场景
稀疏表原创 2025-06-22 21:30:19 · 322 阅读 · 0 评论 -
区间求最值问题高效解决方法
对于区间求最值场景,如果区间不定长度的,可以使用稀疏表进行求解,如果区间是固定长度的,则可以使用分块的思想(与稀疏表原理类似),都是通过压缩状态个数,原创 2025-06-25 23:30:08 · 474 阅读 · 0 评论 -
广度优先与深度优先遍历核心逻辑理解及实践
广度优先与深度优先遍历核心逻辑理解及实践原创 2025-07-08 23:40:07 · 172 阅读 · 0 评论 -
图的拓扑排序
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。原创 2025-07-23 15:52:14 · 172 阅读 · 0 评论