将二维数组排序,Java库里边有对二维数组排序的方法,可以重写二维数组排序,要想升序直接返回左边减右边,降序反之
排序之后,从左到右遍历,左边末端大于右边首端,则有重复区间(用pre记录左边的)
有重复区间,pre不变,继续与下一个比较
没重复区间,pre向下移,与下一个比较
int delN=0;
int size=intervals.length;
//0个或一个都不用删除
if(size<=1){
return 0;
}
//[[1,2],[2,4],[1,3]] 二维数组中每个区间的尾部值为 intervals[i][1]
//使用java Arrays的排序
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1]-o2[1];//返回1代表降序,返回0代表降序
}
});
//排序之后,从左到右进行筛选,右边有和左边重复的区间则跳过
//两个区间比较是否重复
int pre=intervals[0][1];
for (int i=1;i<size;i++){
//如果有右边有重复区间,pre不变
if(pre>intervals[i][0]){
delN++;
}else{
//如果右边没重复区间,则pre往右边移动
pre=intervals[i][1];
}
}
return delN;