码迷,mamicode.com
首页 > 其他好文 > 详细

【编程之美】区间重合判断

时间:2016-05-29 00:46:11      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

  给定一个源区间[x,y](y>=x)和N个无序的目标区间[x1,y1] [x2,y2] [x3,y3] [xn,yn],判断源区间[x,y]是不是在目标区间内?

  例如:给定源区间[1,6]和一组无序的目标区间[2,3] [1,2] [3,9],即可认为区间[1,6]在区间[2,3] [1,2] [3,9]内(因为目标区间实际上是[1,9])。

分析与解法

方法一:直接法

  一个比较直接的思路即将源区间和目标区间逐个投影到坐标轴上,只考察源区间未被覆盖的部分。如果所有的区间全部投影完毕,仍然有源区间没有被覆盖,那么源区间就不在目标区间内。

  时间复杂度为O(N2)。

方法二:排序合并目标区间

  将目标区间合并成几个有序的区间,这样就可以进行区间的比较。

  合并前先将区间按x坐标排序,然后合并成互不相交的区间。

  合并之后,可以遍历合并后的区间,判断源区间是否在合并后的区间内,也可以采用二分查找的方法来判定。

  时间复杂度为O(NlogN)。

扩展问题

  如何处理二维空间的覆盖问题?例如在Windows桌面上有若干窗口,如何判断某一窗口是否完全被其他窗口覆盖?

【编程之美】区间重合判断

标签:

原文地址:http://www.cnblogs.com/xiaoxxmu/p/5537186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!