求最大重叠区间大小

来源:互联网 发布:淘宝买官换机哪家靠谱 编辑:程序博客网 时间:2024/05/20 02:27
题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠
区间的大小。对一个正整数 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));}}


0 0
原创粉丝点击