import java.util.Arrays;/** * 区间重叠问题 * 1 4 * 1 2 * 2 3 * 3 4 */publicclassMain4{publicstaticvoidmain(String[] args){int[][] cal={{1,4},{1,2},{2,3},{3,4}};int n = cal.length;
Cal[] times =newCal[2*n];for(int i =0; i < cal.length; i++){int start = cal[i][0];int end = cal[i][1];
Cal cStart =newCal(start,true);
Cal cEnd =newCal(end,false);
times[2*i]= cStart;
times[2*i+1]= cEnd;}
Arrays.sort(times);// 使用自定义类中的排序方法// System.out.println(Arrays.toString(times));int active =0;// 表示当前正处于激活状态的日程int res =0;for(int i =0; i < times.length; i++){
Cal cur = times[i];if(cur.isActive){
res = res +1;}else{
res = res -1;}
active = Math.max(active,res);}
System.out.println(active);}}classCalimplementsComparable{int val;boolean isActive;// true表明开始时间,false表明结束时间Cal(){}Cal(int val,boolean isActive){this.val = val;this.isActive = isActive;}@OverridepublicintcompareTo(Object o){if(o instanceofCal){
Cal p =(Cal)o;if(this.val > p.val){return1;}elseif(this.val < p.val){return-1;}else{return0;// 当二者的val相等时,直接返回0,即按照前后顺序排序}}else{thrownewRuntimeException("输入类型不匹配");}}@Overridepublic String toString(){return"Cal{"+"val="+ val +", isActive="+ isActive +'}';}}