📝 数据结构和算法
20661篇技术文档📅  最后修改于: 2021-04-17 08:36:00        🧑  作者: Mango
给定一组字符串,找到最长的公共前缀。以前的方法:一个字一个字匹配,逐匹配,分而治之,二进制搜索。在本文中,讨论了一种使用Trie日期结构的方法。脚步:将所有单词一一插入到特里。插入后,我们在Trie上进行散步。在这一步中,请更深入,直到找到一个节点的子节点超过1个(发生分支)或0个子节点(其中一个字符串用尽)。这是因为出现在最长公共前缀中的字符(三叉戟中的节点)必须是其父节点的单个子节点,即-在任...
📅  最后修改于: 2021-04-17 08:36:49        🧑  作者: Mango
给定n个不同整数的数组和一个整数k。找出一个这样的子序列数, 和。换句话说,输出长度为k的求反总数。例子:我们已经在这里讨论了长度3的倒数计算。这篇文章将使用二进制索引树概括该方法,并使用BIT进行计数反演。可以从Peter M. Fenwick在此处发布的实际论文中找到有关二叉索引树的更多信息。1.首先,我们首先将给定的数组转换为元素的排列(请注意,这总是可能的,因为元素是不同的)。2.方法是维...
📅  最后修改于: 2021-04-17 08:37:16        🧑  作者: Mango
先决条件-社交网络简介,Barabasi Albert Graph在社交网络中,有一种现象称为“变得越来越富有”,也称为“优先依恋”。在“优先依恋”中,已经富裕的人变得越来越多,而富有的人的收入却越来越少。这称为“越来越丰富的现象”或“优先依恋”。例如,假设班上有一些学生,每个学生都是与某些学生的朋友,这被称为学位,即学生的学历就是其所拥有的朋友的数量。现在,高学历的学生是有钱的,而低学历的学生是...
📅  最后修改于: 2021-04-17 08:38:28        🧑  作者: Mango
给定一个M个单词的字符串数组和N个单词的字典。任务是检查给定的单词字符串是否可以由字典中存在的单词组成。例子:dict[] = { find, a, geeks, all, for, on, geeks, answers, inter }Input:str[] = { “find”, “all”, “answers”, “on”, “geeks”, “for”, “geeks” };Output:...
📅  最后修改于: 2021-04-17 08:39:30        🧑  作者: Mango
给定大小为N的数组,可以有以下类型的多个查询。update(l,r):更新时,翻转(将a [i]乘以-1)a [i]的值,其中l <= i <= r。简单来说,将a [i]的符号更改为给定范围。query(l,r):查询时,打印给定范围(包括l和r)中数组的总和。例子 :Input :arr[] = { 1, 2, 3, 4, 5 }update(0, 2)query(0, 4)Output:3A...
📅  最后修改于: 2021-04-17 08:40:44        🧑  作者: Mango
给定N个棋盘都为“白色”,并且有多个查询Q。查询有两种类型:更新:给定范围为[L,R]的索引。用L和R之间的相反颜色绘制所有棋子(即,白色棋子应涂成黑色,黑色棋子应涂成白色)。获取:给定范围为[L,R]的索引。找出L和R之间的黑色块数。让我们用“ 0”表示“白色”块,用“ 1”表示“黑色”块。先决条件:段树|延迟传播例子 :解释 :Query1:A [] = {0,0,0,0}由于最初所有块都是白...
📅  最后修改于: 2021-04-17 08:41:06        🧑  作者: Mango
给定长度为N的字符串S,以及以下类型的Q个查询:Type 1:1 i XUpdate the i-th character of the string with the given character, X.Type 2:L RCount number of distinct characters in the given range [L, R].Constraint:1<=N<=5000001...
📅  最后修改于: 2021-04-17 08:44:26        🧑  作者: Mango
给定数组arr []和整数K,任务是计算按位OR≥K的子数组的数量。例子:Input:arr[] = { 1, 2, 3 } K = 3Output:4Bitwise OR of sub-arrays:{ 1 } = 1{ 1, 2 } = 3{ 1, 2, 3 } = 3{ 2 } = 2{ 2, 3 } = 3{ 3 } = 34 sub-arrays have bitwise OR ≥ KI...
📅  最后修改于: 2021-04-17 08:45:10        🧑  作者: Mango
请首先参考Proto Van Emde Boas Tree上的所有先前文章。后续查询过程:基本情况:对于大小为2的Proto-VEB,唯一的可能性是密钥为0,并且如果存在下一个密钥,则该密钥是其后继者或不存在后继者。因此,将应用相同的过程。递归:首先,我们将查看当前群集(表示存在查询关键字的群集),如果存在大于查询关键字的任何关键字,那么我们将成为后继者,因此我们将其返回。如果不是上述情况,那么我...
📅  最后修改于: 2021-04-17 08:45:45        🧑  作者: Mango
Trie是一种有效的信息检索数据结构。使用Trie,可以使搜索复杂度达到最佳极限。给定一个字符串数组。任务是使用Trie以反向字典顺序打印所有字符串。如果输入数组中有重复项,则只需要打印一次即可。例子:方法:为了解决上述问题,首先,使用的所有字符串然后打印从上到下最右边的子树的一个字符串然后打印从上到下第二右子树的字符串然后打印第三右子树等构建Trie树。它类似于从右到左遍历树的顺序。下面是上述方...
📅  最后修改于: 2021-04-17 08:46:07        🧑  作者: Mango
给定N台机器。每台机器都包含一些排序形式的数字。但是每台机器拥有的数量不是固定的。从所有机器输出的数字以无降序排列。例子:每台机器上的数字流表示形式被认为是链表。最小堆可用于按排序顺序打印所有数字。以下是详细的过程1.将链接列表的头指针存储在大小为N的minHeap中,其中N是机器数。2.从minHeap中提取最小项。通过用链接列表中的下一个数字替换minHeap的头部,或者用minHeap中的最...
📅  最后修改于: 2021-04-17 08:46:32        🧑  作者: Mango
我们强烈建议您阅读以下关于后缀树的文章,作为该文章的前提条件。模式搜索设置8(后缀树介绍)后缀数组是给定字符串的所有后缀的排序数组。定义类似于后缀树,后缀树是给定文本的所有后缀的压缩特里。任何基于后缀树的算法都可以替换为使用带有附加信息增强后缀数组并在相同的时间复杂度下解决相同问题的算法(源Wiki)。通过对后缀树进行DFS遍历,可以从后缀树构造后缀数组。实际上,后缀数组和后缀树都可以在线性时间内...
📅  最后修改于: 2021-04-17 08:49:13        🧑  作者: Mango
给定一个二进制矩阵,打印给定矩阵的所有唯一行。例子:方法1:此方法说明解决上述问题的简单方法。方法:一种简单的方法是检查所有处理过的行的每一行。打印第一行。现在,从第二行开始,针对每一行,将该行与已处理的行进行比较。如果该行与任何已处理的行匹配,请跳过该行,否则将其打印出来。算法:逐行遍历矩阵对于每一行,检查是否有比当前索引少的相似行。如果任意两行相似,则不要打印该行。否则打印该行。执行:C++J...
📅  最后修改于: 2021-04-17 08:49:52        🧑  作者: Mango
给定n个整数和整数k的未排序数组arr [],任务是在给定的索引范围[l,r]中找到第k个最大元素例子:Input:arr[] = {5, 3, 2, 4, 1}, k = 4, l = 1, r = 5Output:44 will be the 4th element when arr[0…4] is sorted.Input:arr[] = {1, 4, 2, 3, 5, 7, 6}, k =...
📅  最后修改于: 2021-04-17 08:50:17        🧑  作者: Mango
设计一个可以支持O(1)时间复杂度以下操作的数据结构。insert(x):在数据结构中插入x。如果x不存在,则返回True;如果x已经存在,则返回False。remove(x):从数据结构中删除x(如果存在)。getRandom():随机返回流中存在的任何值。返回每个元素的概率应与流中包含的相同值元素的数量成线性比例。方法:在上一篇文章中,我们已经讨论了用于这种数据结构的方法。但是,以前的数据结构...