Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 最有效的方法;“合并重叠”;开始和结束时间_Algorithm - Fatal编程技术网

Algorithm 最有效的方法;“合并重叠”;开始和结束时间

Algorithm 最有效的方法;“合并重叠”;开始和结束时间,algorithm,Algorithm,假设我们有一个数据结构: class Segment{ float startTime; float endTime; } 我们有一系列的片段,其中一些有重叠的持续时间。整合这些细分市场以使其持续时间不重叠的最佳方式是什么 一个选项是创建一个包含所有开始时间和结束时间的数组,然后按时间顺序排序。然后可以从左到右遍历数组,在每个点跟踪打开间隔的数量。无论何时看到开始时间,都会增加间隔数;无论何时看到结束时间,都会减少间隔数。在执行此操作时,无论何时从零个打开间隔变为一个,都要记录

假设我们有一个数据结构:

class Segment{
    float startTime;
    float endTime;
}

我们有一系列的片段,其中一些有重叠的持续时间。整合这些细分市场以使其持续时间不重叠的最佳方式是什么

一个选项是创建一个包含所有开始时间和结束时间的数组,然后按时间顺序排序。然后可以从左到右遍历数组,在每个点跟踪打开间隔的数量。无论何时看到开始时间,都会增加间隔数;无论何时看到结束时间,都会减少间隔数。在执行此操作时,无论何时从零个打开间隔变为一个,都要记录新间隔的开始时间,无论何时从一个打开间隔变为零,都要记录一个关闭时间

总的来说,这在时间O(sort+n)内运行。如果您使用堆排序或快速排序之类的方法,这就是时间O(n log n)。如果您使用诸如基数排序之类的方法—假设它适用—这将是时间O(n log U),其中U是最大值

希望这有帮助