重叠区间的个数
来源:互联网 发布:如何用java做网站 编辑:程序博客网 时间:2024/04/30 00:59
给定多个可能重合的区间,找出重叠区间的个数。
题解:
我们首先根据区间点的不同类型进行分类,分成start和end点。然后我们根据这些start和end节点的大小来排序,可以用Comparator接口,重写其compareTo方法。那么将节点新生成一个Point类。当碰到起点的时候,重叠个数加1,并且记录重叠个数的最大值;否则当遇到结束点时,重叠个数减1.
代码如下:
class Interval{int start;int end;Interval(int a,int b){start = a;end = b;}}class Point{int value;int type;Point(int v,int t){this.value = v;this.type = t;}}class Com implements Comparator<Point>{public int compare(Point p1,Point p2) //这个方法是看这个Point类中的value值{if(p1.value == p2.value)return 0;else if(p1.value > p2.value) //如果前面那一个大于后面那一个,那么就要交换return 1;else return -1;}}public class getOverlappingCount {public static int GetOverLappingCount(Interval[] A){int max = 0,count = 1; //这里count从1开始是因为计算的是重叠的区间,等于重叠区间个数加1if(A == null || A.length == 0)return max;ArrayList<Point> list = new ArrayList<Point>();for(int i = 0; i < A.length; i++){list.add(new Point(A[i].start,0));list.add(new Point(A[i].end,1)); }Collections.sort(list,new Com());for(int i = 0; i < list.size(); i++){if(list.get(i).type == 0){count++;if(count > 0){max = Math.max(count, max);}}elsecount--;//System.out.println(count + " " + max);}return max;}}
0 0
- 重叠区间的个数
- 重叠区间的个数
- 重叠区间个数
- 给出多个可能重叠的区间,找出重叠区间的个数。
- 算法练习:重叠区间个数
- 重叠区间个数(算法)
- 面试:数组:重叠区间个数
- 区间重叠的判断
- 区间重叠的合并模板
- 区间树上的重叠区间查找算法
- 区间树上的重叠区间查找算法
- 区间重叠
- 【算法】求两个区间的重叠长度
- 区间树中区间重叠检测算法正确性的证明
- 求区间并的个数
- 区间内素数的个数
- 重叠区间大小
- 求重叠区间
- Java 中new Date()之hashCode
- 程序语言设计(第一天学习)
- 《30天自制操作系统》学习笔记(六)
- bzoj1565【NOI2009】植物大战僵尸
- LeetCode-分类题解
- 重叠区间的个数
- Day04 Application 的使用
- 得来全不费功夫
- argc argv
- Java编程题目-4:数组操作问题
- myeclipse中的svn的安装问题
- 模板引擎 : Smarty
- Oracle 当前用户给另一个用户授权查询指定表或视图的权,否则另一个用户提示不存在视图或表
- javaScript基础知识