在准备一些编程访谈时,我遇到了一个很好的问题。在重叠间隔中查找基本间隔
给定一组可能重叠的区间,您需要编写一个函数来返回它们之间的所有基本区间。例如:如果您给出了以下列表对的间隔:{{1,5},{3,10},{5,11},{15,18},{16,20}},那么您需要返回以下内容:
{{1,3},{3,5},{5,10},{10,11},{15,16},{16,18},{18,20 }}
注意在上述回答下列问题:
- 间隔{11,15}省略了答案,因为它是 不存在的输入。
- 由于在{3,10}中定义的起始点“3”在 中,输入中的区间{1,5}已被分割为{1,3},{3,5} 将间隔分成两个基本区间的输入。在Java中
方法签名:
List<Pair<Integer, Integer>> generateElementaryIntervals(List<Pair<Integer, Integer> intervals)
一,我想象中的解决方案是将输入分成不相交集,然后简单的O(NlogN)排序中的每一个在所有的数字非相交集合将产生答案。有没有更有效的方法来做到这一点?
你的问题是继续? – 2011-12-14 08:37:47