您的位置:首页 > 其它

求最大重叠区间大小

2015-06-09 10:11 901 查看
题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠

区间的大小。对一个正整数 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 。

public class DupNumber {
public static int solution(int a1,int b1,int a2,int b2){
int aa1 = Math.min(a1, b1);
int bb1 = Math.max(a1, b1);

int aa2 = Math.min(a2, b2);
int bb2 = Math.max(a1, b2);

int flag = (bb1-aa1>bb2-aa2)?1:0;
int stepMax = Math.min(bb1-aa1,bb2-aa2)+1;

int count = 0;
if(flag==1){
for(int i=0; i<stepMax; i++){
if(aa2+i>=aa1 && aa2+i<=bb1){
++count;
}
}
}else{
for(int i=0; i<stepMax; i++){
if(aa1+i>=aa2 && aa1+i<=bb2){
++count;
}
}
}
return count;
}
public static void main(String[] args) {
System.out.println(solution(10,0,10,25));
System.out.println(solution(20,10,20,30));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: