首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

查寻一维线段重叠

2012-12-29 
查找一维线段重叠给出连续给出[i, j]表示线段的起点和终点,要求在已经给出的线段中没有相互重叠的线段。比

查找一维线段重叠
给出连续给出[i, j]表示线段的起点和终点,要求在已经给出的线段中没有相互重叠的线段。比如:
[1, 2]
[3, 4]
[5, 6]
[1, 3] //发现和[1, 2], [3, 4]重叠(起始点和终点相同也算重叠),删除[1, 2] [3, 4]
有比暴力方法效率更高的方法吗?
我考虑将线段先排列,但是,怎么排列才能使查找的效率能提高又不出错呢?

[解决办法]
就按照起点排序即可,插入麻烦一点,先二分查找起点位置,找到后先根据起点查该起点在终点数据中是否存在,如不存在,记录前面的数据和后面的数据,如果终点在前面的数据的终点和后面数据的起点之间则插入,否则删除不符的数据
[解决办法]
题意有歧义

引用:给出连续给出[i, j]表示线段的起点和终点,要求在已经给出的线段中没有相互重叠的线段。

1  是任意两对线段看看有没有重叠吗?那么检查C(n,2)

但是看LZ后面说的 又不象 象是挑出一些线段


2  那么 不要求覆盖最多的区间吗?   哈哈 这样只要随便一段区间即可 其他全删掉 时间复杂度O(1)  最快 哈哈

   否则 上面答案都非最优解

不知LZ什么意思


热点排行