arrays - 给定一系列范围,找到覆盖的总距离?

标签 arrays algorithm

这是我听说的一个面试问题。您有一系列数组,其中元素长度为两个数组,起点和终点在数字线上。可以有重叠。您需要返回覆盖的总距离。你会如何解决这个问题?

例子: 输入:[[3,5], [1,3], [2,4]] 输出:4

我的想法:您需要跟踪涵盖的范围以及某个值是否在特定范围内。虽然不太确定该怎么做?

最佳答案

您需要合并您的起始间隔,一旦它们合并,只需将总距离计算为每个间隔中覆盖的距离之和。

您可以在 O(n * log n) 中合并间隔,其中 n 是间隔数。为此,您可以根据第一点/第二点对它们进行排序。现在您遍历排序的间隔并检查应该合并哪一个。要了解为什么以及如何合并它们,请绘制如下内容:

a---------------------b
            c-------------------d

并注意合并区间的相似性。提示 max(a,c) > min(b,d)

P.S.如果你想通过面试,多想想这个问题是有道理的。

关于arrays - 给定一系列范围,找到覆盖的总距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36708394/

相关文章:

algorithm - 如何在命题逻辑中获得一个 "indirect implicant"

algorithm - 在 2 个排序的整数数组中进行二进制搜索

c# - 连续 2 个 c# 程序游戏

java - openjdk中的数组长度变化

java - Java 中的链表数组

c++ - 如何制作需要执行此操作的功能?

PHP 获取数组中重复次数最多的项

c# - LZ复杂度算法

javascript - 如何在 JavaScript 中将数组中的随机值分配给另一个数组中的项目(将名称数组分配给工作日数组)?

c# - 许多 DateTime 的比较速度更快