求最大重叠区间大小

题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠
区间的大小。对一个正整数 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值