📝 数据结构和算法
20661篇技术文档📅  最后修改于: 2021-04-17 08:25:22        🧑  作者: Mango
给定一个二进制字符串str,任务是检查给定的字符串是否符合以下条件:字符串以‘1’开头。每个“ 1”后跟一个空字符串(“”),“ 1”或“ 00”。每个“ 00”后跟一个空字符串(“”),“ 1”。如果给定的字符串符合上述条件,则打印“有效字符串”,否则打印“无效字符串”。例子:Input:str = “1000”Output:FalseExplanation:The given string s...
📅  最后修改于: 2021-04-17 08:25:55        🧑  作者: Mango
它是具有以下属性的二叉树:(1)节点右子树中的每个密钥都大于存储在节点本身中的密钥,(2)根没有左子,并且(3)仅在树的最后两个级别上找到叶子。它用于实现优先级队列。用户可能更喜欢弱堆而不是二进制堆的原因是,在最坏的情况下,弱堆能够执行较少的元素比较。基于弱堆的基于数组的实现的插入和删除的最坏情况下的时间复杂度是:1.插入:O(lg n)2.删除:O(lg n)弱堆构造使用支持恒定时间插入的缓冲区...
📅  最后修改于: 2021-04-17 08:26:38        🧑  作者: Mango
当存在固定大小的数据时,合并哈希是一种避免冲突的技术。它是单独链接和开放寻址的结合。它使用开放寻址(线性探测)的概念从哈希表的底部查找冲突元素的第一个空白位置,并使用单独链接的概念通过指针将冲突元素彼此链接。使用的哈希函数为h =(key)%(键总数)。在哈希表中,每个节点具有三个字段:h(key):密钥的哈希函数的值。数据:密钥本身。下一个:指向下一个碰撞元素的链接。合并哈希的基本操作是:INS...
📅  最后修改于: 2021-04-17 08:27:32        🧑  作者: Mango
给定一个由N个整数组成的数组arr [],并且查询形式为{L,R}的Q [] [],其中0≤L <R≤N – 1,每个查询的任务是计算以下方程式:KL| KL + 1|…| KR – 1whereKi= (arr[i] ^ arr[i+1]) | (arr[i] ~ arr[i+1]),“~”represents binaryXNOR,“^”represents binaryXOR,“|”repr...
📅  最后修改于: 2021-04-17 08:28:15        🧑  作者: Mango
给定n个元素的数组和q个范围查询(本文中的范围总和)且不进行更新,任务是以有效的时间和空间复杂性来回答这些查询。应用平方根分解后,范围查询的时间复杂度为O(&Sqrt; n)。通过对数组的较早分解的块进行平方根分解,可以将平方根因子减小为恒定的线性因子。先决条件:莫氏算法|前缀数组方法 :当我们对给定数组应用平方根分解时,查询范围和需要O(&Sqrt; n)时间。在此,计算在考虑中的块(角块)之间...
📅  最后修改于: 2021-04-17 08:28:55        🧑  作者: Mango
我们已经讨论了“跳过列表”的概念以及它们如何在“跳过列表”中工作。设置1(简介)。在本文中,我们将讨论如何在“跳过列表”中插入元素。决定节点级别列表中的每个元素都由一个节点表示,在插入列表时会随机选择节点的级别。级别不取决于节点中元素的数量。节点的级别由以下算法决定-MaxLevel是跳过列表中级别数的上限。可以确定为–。上面的算法确保随机级别永远不会大于MaxLevel。在此,p是具有级别i指针...
📅  最后修改于: 2021-04-17 08:29:30        🧑  作者: Mango
先决条件:Fenwick树(二进制索引树)给定一个由N个数字组成的数组,以及多个查询,其中每个查询将包含三个数字(l,r和k)。任务是计算子数组[L,R]中大于K的数组元素的数量。例子:天真的方法是通过简单地从索引l遍历到r遍历数组来查找每个查询的答案,并在数组元素大于k时保持对计数加1。时间复杂度:O(n * q)更好的方法是使用合并排序树。用这种方法,在每个节点上建立一个带有向量的分段树,该向...
📅  最后修改于: 2021-04-17 08:30:04        🧑  作者: Mango
给定N个元素的数组arr [],任务是回答Q个查询,每个查询都有两个整数L和R。对于每个查询,任务是找到数字总和为偶数的子数组arr [L…R]中的元素数量。例子:Input:arr[] = {7, 3, 19, 13, 5, 4}query = { 1, 5 }Output:3Explanation:Elements 19, 13 and 4 have even digit sumin the ...
📅  最后修改于: 2021-04-17 08:31:05        🧑  作者: Mango
插入m-Way搜索树:m-Way搜索树中的插入与二叉树相似,但一个节点中的元素不得超过m-1个。如果该节点已满,则将创建一个子节点以插入其他元素。让我们看下面给出的在m-Way搜索树中插入元素的示例。例子:要将新元素插入m-Way搜索树,我们将以与搜索元素相同的方式进行操作要将6插入到图中所示的5向搜索树中,我们继续搜索6并发现我们掉落在节点[7,12]的树上,第一个子节点显示了空指针由于该节点只...
📅  最后修改于: 2021-04-17 08:31:26        🧑  作者: Mango
在本文中,我们将生成测试用例,以使给定的设置边形成一棵树。以下是树的两个条件:它的边应比顶点数少一个。里面应该没有周期。方法:想法是运行一个循环并在每次随机生成的边上添加一个边,对于添加每个边,我们将检查它是否正在形成循环。通过不交集联合,我们可以确保存在或不存在循环。如果添加任何边形成循环,则忽略当前边并生成新的边集。否则,将使用随机生成的权重打印边缘。下面是上述方法的实现:C++输出:时间复杂...
📅  最后修改于: 2021-04-17 08:32:43        🧑  作者: Mango
Levelwise OR / XOR交替段树是一个段树,以便在每个级别上,操作OR和XOR交替发生。换句话说,在第1层,左右子树通过“或”运算合并在一起,即父节点=左子节点或右子节点,在第2层,左节点和右子树在左边右子树和右子树通过XOR操作合并在一起,即父节点=左子节点XOR右子节点这种类型的细分树具有以下类型的结构:操作(OR)和(XOR)指示执行了哪个操作以合并子节点给定2N个叶节点,任务是...
📅  最后修改于: 2021-04-17 08:33:33        🧑  作者: Mango
建议将此职位作为此职位的先决条件。八卦树|设置1(搜索)如前一篇文章所述,Splay树是一种自平衡数据结构,其中最后访问的密钥始终位于根目录。插入操作类似于“二进制搜索树”插入,但要执行其他步骤,以确保新插入的键成为新的根。以下是在展开树中插入密钥k的不同情况。1)根为NULL:我们只需分配一个新节点并将其作为根返回即可。2)展开给定的密钥k。如果k已经存在,则它将成为新的根。如果不存在,则最后访...
📅  最后修改于: 2021-04-17 08:34:13        🧑  作者: Mango
问题陈述:问题是使用面向对象原理设计国际象棋游戏。询问对象:Adobe,Amazon,Microsoft等解决方案:在面试中会问这些类型的问题,以判断候选人的面向对象设计技能。因此,首先我们应该考虑类。主要课程将是:点:点表示8×8网格的一个块和一个可选块。件:系统的基本构建块,每件都将放置在一个位置上。计件类是抽象类。扩展类(Pawn,King,Queen,Rook,Knight,Bishop)...
📅  最后修改于: 2021-04-17 08:34:51        🧑  作者: Mango
动态编程(DP)是一种通过将问题分解为遵循最佳子结构的重叠子问题来解决问题的技术。使用DP时会遇到各种问题,例如子集总和,背包,零钱等。DP也可以应用于树上以解决一些特定问题。先决条件:DFS给定一棵具有N个节点和N-1个边的树,无需重新访问任何节点即可计算从根到任何叶子的节点值的最大和。上面给出的是N = 14个节点和N-1 = 13个边的树的示意图。节点1、2、3、4….14的节点值分别为3、...
📅  最后修改于: 2021-04-17 08:35:17        🧑  作者: Mango
让我们考虑下面的问题陈述,并为它考虑不同的解决方案。给定一组元素S,使得元素取自宇宙{0,1,…。 u-1},可以有效地执行以下操作。insert(x):将项x添加到set + S中。isEmpty():如果S为空,则返回true,否则返回false。find(x):如果x存在于S中,则返回true,否则返回false。insert(x):将项x插入S。delete(x):从S删除项目x。max(...