求最大重叠区间大小

题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠
区间的大小。对一个正整数 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));
	}
}


你可能感兴趣的:(求最大重叠区间大小)