import java.util.*; /** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } */ public class Solution { public ArrayList<Interval> merge(ArrayList<Interval> intervals) { //区间按照起点升序排序 //取出A中第一个区间存入B //取出B的最后一个区间和A的二个区间比较,局部最优解存入B //取出B的最后一个区间和A的三个区间比较,局部最优解存入B //取出B的最后一个和A的第四个比较,局部最优解存入B //取出B的最后一个区间和A的第五个比较,局部最优解存入B Collections.sort(intervals, new Comparator<Interval>(){ public int compare(Interval o1, Interval o2){ if(o1.start != o2.start) return o1.start - o2.start; else return o1.end - o2.end; } });
ArrayList<Interval> re_list = new ArrayList<Interval>(); if(intervals.size()==0){ return re_list; } re_list.add(intervals.get(0)); for(int i=1; i<intervals.size(); i++){ //临时A,可能有问题 Interval A = re_list.get(re_list.size()-1); re_list.remove(re_list.size()-1); //临时B,可能有问题 Interval B = intervals.get(i); if(A.end<B.start){ re_list.add(A); re_list.add(B);
}else if(A.end>=B.start){ if(A.end>B.end){ A.end = A.end; }else{ A.end = B.end; } re_list.add(A); } } return re_list; } } 标签:compare,end,re,int,Interval,list,start,返回值 From: https://www.cnblogs.com/northli/p/16884673.html