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是最大值 希望这有帮助