class TimeNode {
int time;
int end;
public TimeNode(int time, int end){
this.time = time;
this.end = end;
}
}
private List<Integer> find11(int[][] intervals) {
List<TimeNode> tnList = new LinkedList<>();
for (int[] interval: intervals) {
tnList.add(new TimeNode(interval[0], 0));
tnList.add(new TimeNode(interval[1], 1));
}
Collections.sort(tnList, new Comparator<TimeNode>(){
@Override
public int compare(TimeNode t1, TimeNode t2){
if (t1.time != t2.time)
return t1.time - t2.time;
else
return t1.end - t2.end;
}
});
int count = 0, max = 0;
List<Integer> res1 = new LinkedList<>();
for (TimeNode tn: tnList) {
if (tn.end == 0) {
count++;
if (count > max) {
res1.clear();
res1.add(tn.time);
max = count;
} else if (count == max){
res1.add(tn.time);
}
} else {
if (count == max) {
res1.add(tn.time);
}
count--;
}
}
List<Integer> res2 = new LinkedList<>();
for (int i = 0; i + 1 < res1.size(); i = i + 2) {
for (int j = res1.get(i); j < res1.get(i + 1); j++ ) {
res2.add(j);
}
}
return res2;
}