检查给定数组是否包含相距 k 以内的重复元素2025年3月17日 | 阅读 3 分钟 根据问题“检查给定数组中相距 k 以内的重复元素”,我们必须确定提供的无序数组中是否存在相距 k 以内的重复元素。在此实例中,提供的数组无法容纳 k 的值。 ![]() K=2,所以我们看到一个包含两个 1 的窗口。该数组包含一个大小为 k 的包含重复项的窗口。 示例示例-1 输出 False 示例-2 输出 True 示例-3 输出 False 示例 4 输出 True 说明 要解决这个问题,我们有两种选择。更简单的方法是执行两个循环,第一个循环选择每个元素作为第二个循环的起始元素,称为“内循环”。然后,第二个循环会将起始元素与“k”范围内的每个元素进行比较。但是,这种方法效率不高;其时间复杂度为 O(k*n)。 哈希是更有效的一种技术,可以解决这个问题,时间复杂度为 O(n)。在哈希技术中,我们将遍历数组的项以确定元素是否存在。如果元素存在,我们将返回“True”。如果不存在,我们将将其添加到哈希中,并且如果 i 大于或等于 k,我们将从哈希中移除 arr[i-k] 元素。 检查算法以确定给定数组是否包含相互距离 k 以内的重复元素
我们将使用哈希集来存储其中的元素,一次添加数组的每个元素。如果元素已存在于哈希集中,它将返回 true 并结束循环。如果不存在,它将继续将元素添加到集合中并从集合中移除 arr[i-k] 元素。我们有一个名为“arr []”的数组,其中包含一些元素,以及一个值 k,它表示我们必须在该范围内查找重复项(如果存在)。 代码检查 C++ 代码中数组内距离 k 以内的重复元素 输出 Yes 检查 Java 中数组内距离 k 以内的重复元素 输出 Yes 复杂性评估时间复杂度 O (n),其中“n”是数组的总元素数。通过使用哈希集,该问题可以线性解决。因为使用哈希集可以提高搜索、删除和数据插入的效率。 空间复杂度 O (k),其中“k”表示必须检查的窗口元素数量。 |
栈是一种遵循 LIFO 原则的线性数据结构,意味着第一个插入的元素将最后被删除。另一方面,队列是一种遵循 FIFO 原则的线性数据结构,意味着添加的元素将...
阅读 6 分钟
找出二叉树中某个节点的索引是一项常见任务,涉及到对其左子节点和右子节点的引用。节点中的“索引”一词通常指的是树中某个节点的位置,它允许高效导航...
阅读 6 分钟
树是一种最基本的数据结构。它们用于存储和组织数据。一种称为二叉树的树数据结构由左节点和右节点组成,每个节点最多可以有两个子节点。一切都始于...
阅读9分钟
通过中序树遍历,节点按以下顺序访问:左子节点、当前节点,然后是右子节点。通常,此序列称为“LNR”。中序树遍历提供了一种系统地遍历和处理二叉树中每个节点的方法,它能够...
阅读 8 分钟
在本主题中,我们将探讨二叉树的垂直遍历。对于垂直遍历,我们将计算水平距离。我们将为每个节点分配水平距离,水平距离可以从树的任何一侧计算。在此……
阅读 8 分钟
找到从二维矩阵的左上角到右下角的每条路径是一个经典的算法问题。要有效地遍历矩阵并揭示每条可能的路径,这个问题需要研究各种方法,例如动态规划和回溯....
5 分钟阅读
员工及其老板在字典中映射为一对(员工,经理)的数量,如下所示:{ "A", "C" }, { "B", "C" }, { "C", "F" }, { "D", "E" }, { "E", "F" }, { "F", "F" } 在这个例子中,C 是 F 的经理...
阅读 3 分钟
简介:优先级队列是计算机科学中的基本数据结构,可以快速访问优先级最高(或最低)的元素。C++ 中的优先级队列可以扩展以处理对,提供了一种根据对的第一个或第二个元素进行排序的灵活方法...
7 分钟阅读
简介:在本文中,我们将介绍二叉索引树的范围更新和点查询。但在此之前,我们必须了解什么是二叉索引树。我们可以说二叉索引树是一种有助于我们...
阅读 8 分钟
Fenwick 树,也称为二叉索引树 (BIT),是一种主要用于有效地对数组执行动态累积频率搜索的数据结构。它对于基于范围的计算非常有用,尤其是在数据集是静态的或更新不频繁的情况下……
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India