栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在数组中查找连续范围

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在数组中查找连续范围

我认为以下解决方案将在O(n)时间中使用O(n)空间工作。

首先将数组中的所有条目放入哈希表。接下来,创建第二个哈希表,该表存储我们已“访问”的元素,该元素最初为空。

现在,一次遍历元素数组。对于每个元素,检查该元素是否在访问集中。如果是这样,请跳过它。否则,从该元素开始向上计数。在每个步骤中,检查当前数字是否在主哈希表中。如果是这样,请继续,并将当前值标记为已访问集的一部分。如果没有,请停止。接下来,重复此过程,除了向下计数。这告诉我们包含此特定数组值的范围内的连续元素数。如果我们跟踪以这种方式找到的最大范围,我们将有一个解决方案。

该算法的运行时复杂度为O(n)。要看到这一点,请注意,我们可以在O(n)时间的第一步中构建哈希表。接下来,当我们开始扫描到数组以找到最大范围时,每个扫描范围所花费的时间与该范围的长度成比例。由于范围长度的总和是原始数组中元素的数量,并且由于我们从未两次扫描相同的范围(因为我们标记了我们访问的每个数字),因此第二步将O(n)时间作为好,对于O(n)的净运行时间。

编辑: 如果您很好奇,我可以使用该算法的
Java实现
,以及对其工作原理以及运行时正确性的详细分析。它还探讨了一些在算法的初始描述中不明显的边缘情况(例如,如何处理整数溢出)。

希望这可以帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637455.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号