求最大重叠区间大小
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 。
区间的大小。对一个正整数 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)); } }
相关文章推荐
- 跨平台工程移植:opencv_pnp + artoolkitplus :ubuntu qtcreator--> windows qtcreator/ VS
- 软件项目管理面面观之“玩的就是心跳”
- jquery获取和设置radio,select,checkbox的值
- mybatis特性--- 级联查询
- 九度OJ-题目1524:复杂链表的复制
- 如何配置git ssh连接,如何在GitHub上添加协作开发者,如何配置gitignore和如何在GitHub上删除资源库.
- 文件操作中SaveFileDialog的用法
- bitcoin多重签名
- Android短信发送和接收流程源码分析
- SharePoint 2013 开发——SharePoint Designer 2013工作流
- 增加虚拟主机
- ssh 配置讲解大全 [待整理]
- iostat 等运维命令用法
- iptables详解
- 旋转数组的最小数字
- java.sql.SQLException: ORA-00911: 无效字符
- 字符串转码
- Crontab 定时任务 命令详解
- 认识自己——心累的原因
- 5 个免费的受欢迎的 SQLite 管理工具