算法
文章平均质量分 90
WH牛
加油!加油!加油!希望可以变得独当一面。
展开
-
Trie树(字典树)
Trie树,又称字典树,是用来高效存储和查找字符串集合的一种数据结构查找时,可以高效的查找某个字符串是否 在Trie树中出现过,并且可以查找出现了多少次利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。1.2主要性质1.根节点不包含字符,除根节点外的每一个子节点都包含一个字符。2.从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。3.每个节点的所有子节点包含的字符互不相同。原创 2024-08-25 23:25:41 · 778 阅读 · 0 评论 -
快速幂算法
游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1号位置,…,依此类推,第 n−m 号位置上的小伙伴走到第 0 号位置,第 n−m+1 号位置上的小伙伴走到第 1 号位置,…,第 n−1号位置上的小伙伴顺时针走到第 m−1号位置。1.即用二进制表示b,将a^b用a^(2^0),a^(2^1),a^(2^2),…最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,…x号小伙伴 1轮后走到 (x + m) % n 号位置。原创 2024-06-07 17:27:10 · 923 阅读 · 0 评论 -
并查集算法
逐字拆解一下,并、查、集。这个三个字,其中前面两个字都是动词,第三个字是个名词。(1)并查集可以进行集合合并的操作(并)(2)并查集可以查找元素在哪个集合中(查)(3)并查集维护的是一堆集合(集)基本原理:每个集合用一棵树来表示。树的编号就是整个集合的编号。每个节点存储它的父节点,p[x]表示x的父节点并查集算法无论是集合合并还是元素查询,时间复杂度都是接近 0(1)。原创 2024-06-05 21:16:07 · 1059 阅读 · 0 评论 -
字符串哈希
故求出s[l1, r1] 和 s[l2,r2]对应的字符串的哈希值h[s[l1, r1]] h[s[l2, r2]],并判断是否相等。给定一个长度为 n 的字符串,再给定 m个询问,每个询问包含四个整数 l1,r1,l2,r2,请你判断 [l1,r1] 和 [l2,r2]这两个区间所包含的字符串子串是否完全相同。我们的做法是:将字符串一一映射为数字,两个数字相等,等价于字符串相等。接下来 m 行,每行包含四个整数 l1,r1,l2,r2,表示一次询问所涉及的两个区间。注意,字符串的位置从 1 开始编号。原创 2024-06-01 14:27:16 · 721 阅读 · 1 评论 -
二分查找算法
起初,机器人在编号为 0 的建筑处。如果 H(k+1)>E,那么机器人就失去 H(k+1)−E 的能量值,否则它将得到 E−H(k+1)的能量值。2.x表示我们分出的小巧克力的边长,很显然我们的目的是在区间1≤x≤max(Hi,Wi)内确定一个最大的边长x,使得第i块巧克力可以分成若干小块巧克力(注意不可拼接),所有巧克力的若干小块加起来的数量恰好等于k(小朋友的数量)。1.随着我们分出的小巧克力的边长越长,能分给的小朋友的数量就会越少(但每个小朋友得到的巧克力的面积就会越大),故这题显然是一个二分。原创 2024-05-31 16:39:15 · 1556 阅读 · 2 评论 -
BF算法详解(JAVA语言实现)
BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。如果可以在S中寻找到T,我们返回的是相匹配字符串中第一个字符在S串里的下标索引值;如果找不到,我们通常设置为返回-1。原创 2023-10-06 21:54:59 · 364 阅读 · 1 评论