面试题精选(69):求最大重叠区间大小

来源:互联网 发布:森田面膜哪款好用 知乎 编辑:程序博客网 时间:2024/06/08 01:51

题目描述:请编写程序,找出下面 “ 输入数据及格式 ” 中所描述的输入数据文件中最大重叠区间的大小。

对一个正整数 n ,如果 n 在数据文件中某行的两个正整数(假设为 A 和 B )之间,即 A <=n <=B 或 A>=n>=B ,则 n 属于该行;如果 n 同时属于行 i 和 j ,则 i 和 j 有重叠区间;重叠区间的大小是同时属于行 i 和 j 的整数个数。
例如,行( 10 20 )和( 12 25 )的重叠区间为 [12 20] ,其大小为 9 ,行 (20 10) 和( 20 30 )的重叠区间大小为 1 。

 

 

 

 

思路:

先用n*log(n), 按照区间的左端点(较小的那个数)排个序,然后用O(n)遍历一遍就行了!

遍历的过程只记录右端点(较大的那个数)的最大值,重叠区间=最大值-当前左端点值,记录产生过的最大重叠区间就行了!

也可以用线段树来做,不过是一样的!