📝 数据结构和算法

20661篇技术文档
  查询具有给定范围的具有单个设置位的数组元素

📅  最后修改于: 2021-04-17 08:15:38        🧑  作者: Mango

给定一个由N个整数组成的数组arr []和一个由以下两种类型的查询组成的2D数组Q [] []:1 LR:仅从一个设置位打印范围为[L,R]的数字计数。2 XV:使用V更新第X个索引处的数组元素。例子:Input:arr[] = { 12, 11, 16, 2, 32 }, Q[][] = { { 1, 0, 2 }, { 2, 4, 24 }, { 1, 1, 4 } }Output:1 2Ex...

  将通用树(N数组树)转换为二叉树

📅  最后修改于: 2021-04-17 08:15:57        🧑  作者: Mango

先决条件:通用树(N数组树)在本文中,我们将讨论泛型树到二叉树的转换。以下是将泛型(N数组树)转换为二叉树的规则:二叉树的根是泛型树的根。通用树中节点的左子节点是二叉树中该节点的左子节点。通用树中任何节点的右同级是二叉树中该节点的右子级。例子:将以下泛型树转换为二叉树:以下是上述通用树的二叉树:Note:If the parent node has only the right child in ...

  数组中的范围总和和更新:使用堆栈的段树

📅  最后修改于: 2021-04-17 08:17:11        🧑  作者: Mango

给定一个N个整数的数组arr []。任务是执行以下操作:向从索引A到B的所有元素添加值X,其中0≤A≤B≤N-1。在给上述数组进行更新之前和之后,找到从索引L到R的元素的总和,其中0≤L≤R≤N-1。例子:Input:arr[] = {1, 3, 5, 7, 9, 11}, L = 1, R = 3, A = 1, B = 5, X = 10Output:Sum of values in give...

  跳过列表|第3组(搜索和删除)

📅  最后修改于: 2021-04-17 08:18:20        🧑  作者: Mango

在上一篇文章中跳过列表|第2组(插入)讨论了跳过节点的结构以及如何在跳过列表中插入元素。在本文中,我们将讨论如何在跳过列表中搜索和删除元素。在跳过列表中搜索元素搜索元素与搜索要在跳过列表中插入元素的地点的方法非常相似。基本想法是-下一个节点的键小于搜索键,然后我们继续在相同级别上前进。下一个节点的密钥大于要插入的密钥,然后我们将指向当前节点i的指针存储在update [i]处,并向下移动一级并继续...

  从距离节点X最多D个距离节点的子树中查找最小权重的查询

📅  最后修改于: 2021-04-17 08:18:40        🧑  作者: Mango

给定一个以1为根的N元树,以及一个由分配给每个节点的权重组成的数组val []和一个由{X,D}形式的查询组成的矩阵Q [] [],每个查询的任务可以找到分配给节点的所有权重中的最小值,该权重距节点X的距离最大为D。例子:Input:Q[][] = {{1, 2}, {2, 1}}, val[] = {1, 2, 3, 3, 5}Output:13Explanation:Query 1: X = ...

  检查给定范围内的数组元素的乘积是否为第M个根

📅  最后修改于: 2021-04-17 08:18:54        🧑  作者: Mango

应作者的要求,内容已被删除。...

  虫子|套装2(使用特里)

📅  最后修改于: 2021-04-17 08:20:26        🧑  作者: Mango

给定字典,这是在字典和M x N板中进行查询的方法,其中每个单元格都有一个字符。查找可以由一系列相邻字符组成的所有可能单词。请注意,我们可以移至8个相邻字符的任何一个,但是一个单词不应具有同一单元格的多个实例。例子:输入:dictionary [] = {“ GEEKS”,“ FOR”,“ QUIZ”,“ GO”}; boggle [] [] = {{‘G’,’I’,’Z’},{‘U’,’E’,’...

  通过重复合并任何相邻元素来减少Array的最低成本

📅  最后修改于: 2021-04-17 08:21:06        🧑  作者: Mango

给定N个数字的数组arr []。我们可以将两个相邻的数字合并为一个,合并两个数字的成本等于两个值的总和。任务是找到合并所有数字的总最低成本。例子:Input:arr[] = { 6, 4, 4, 6 }Output:40Explanation:Following is the optimal way of merging numbers to get the total minimum cost ...

  使用fenwick树(BIT)的订单统计树

📅  最后修改于: 2021-04-17 08:21:30        🧑  作者: Mango

给定整数范围有限的整数(0到1000000)。我们需要使用fenwick树实现Order统计树。它应该支持四种操作:插入,删除,选择和排序。在此,n表示分域树的大小,q表示查询数。每个查询应为以下4个操作之一。insertElement(x)–将元素x插入Fenwick树中,最坏情况下的时间复杂度为O(log n)deleteElement(x)–从fenwick树中删除元素x,O(log n)的...

  查找以给定后缀结尾的字符串

📅  最后修改于: 2021-04-17 08:22:05        🧑  作者: Mango

给定一组字符串S和一个字符串P,任务是打印该组中所有带后缀P的字符串。例子:Input:S = {“geeks”, “geeksforgeeks”, “geek”, “newgeeks”, “friendsongeeks”, “toppergeek”}P = “geeks”Output:geeksfriendsongeeksgeeksforgeeksnewgeeksInput:S = {“wide...

  细分树|高效实施

📅  最后修改于: 2021-04-17 08:22:51        🧑  作者: Mango

让我们考虑以下问题,以了解没有递归的段树。我们有一个数组arr [0。 。 。 n-1]。我们应该能够查找从索引l到r的元素的总和,其中0 <= l <= r <= n-1将数组的指定元素的值更改为新值x。我们需要做arr [i] = x,其中0 <= i <= n-1。一个简单的解决方案是运行从l到r的循环,并计算给定范围内的元素总和。要更新值,只需做arr [i] = x。第一次操作花费O(n...

  在给定范围内出现偶数次的数字的XOR

📅  最后修改于: 2021-04-17 08:23:18        🧑  作者: Mango

给定一个数字数组,大小为N和Q。每个查询或范围可以由L(LeftIndex)和R(RightIndex)表示。查找在给定范围内出现偶数次的数字的XOR和。先决条件:查询给定范围内不同数字的数量。 |用于范围查询的细分树例子 :以上示例说明:在查询1中,没有数字出现偶数次。因此,XOR和为0。在查询2中,{3}出现偶数次。 XOR和为3。在查询3中,{1}出现偶数次。 XOR和为1。在查询4中,{1...

  最长正确的括号子序列的范围查询

📅  最后修改于: 2021-04-17 08:23:44        🧑  作者: Mango

给定括号序列,换句话说,字符串S的长度为n,由字符“(”和“)”组成。查找给定查询范围的序列的最大正确括号子序列的长度。注意:正确的括号序列是具有匹配的括号对或包含另一个嵌套的正确括号序列的序列。例如,(),(()),()()是一些正确的括号序列。例子:段树可以用来有效地解决这个问题在段树的每个节点上,我们存储以下内容:(未使用的开放式括号–表示它们不能与任何封闭式括号匹配,未使用的封闭式括号–表...

  后缀树应用程序4 –构建线性时间后缀数组

📅  最后修改于: 2021-04-17 08:24:35        🧑  作者: Mango

给定一个字符串,构建它的后缀数组我们已经讨论了以下两种构建后缀数组的方式:朴素的O(n2Logn)算法增强型O(nLogn)算法请通过这些进行基本了解。在这里,我们将看到如何使用后缀树在线性时间内构建后缀数组。作为前提,我们必须知道如何以一种或另一种方式构建后缀树。在这里,我们将使用Ukkonen算法构建后缀树,该算法已在下面进行了讨论:Ukkonen的后缀树构造–第1部分Ukkonen的后缀树构...

  自组织列表:计数方法

📅  最后修改于: 2021-04-17 08:24:58        🧑  作者: Mango

自组织列表是重新组织或重新排列自身以提高性能的列表。在一个简单的列表中,以顺序方式查找要搜索的项目,该方式给出了O(n)的时间复杂度。但是在实际情况下,并非所有项目都会被频繁搜索,并且在大多数情况下,只有很少的项目会被多次搜索。因此,自组织列表使用此属性(也称为参考位置)将最常使用的项目置于列表的顶部。这增加了在列表的开头找到该项目的可能性,并且那些很少使用的元素被推到列表的后面。在Count M...