|
| 1 | +packagemedium; |
| 2 | + |
| 3 | +importjava.util.Arrays; |
| 4 | +importjava.util.Collections; |
| 5 | +importjava.util.Comparator; |
| 6 | +importjava.util.List; |
| 7 | + |
| 8 | +importclasses.Interval; |
| 9 | + |
| 10 | +publicclassNonOverlappingIntervals { |
| 11 | +/**Looked at these two posts: https://discuss.leetcode.com/topic/65828/java-solution-with-clear-explain |
| 12 | + * and https://discuss.leetcode.com/topic/65594/java-least-is-most |
| 13 | + * Sort the intervals by their end time, if equal, then sort by their start time.*/ |
| 14 | +publicstaticinteraseOverlapIntervals(Interval[]intervals) { |
| 15 | +Collections.sort(Arrays.asList(intervals),newComparator<Interval>(){ |
| 16 | +@Override |
| 17 | +publicintcompare(Intervalo1,Intervalo2) { |
| 18 | +if(o1.end !=o2.end)returno1.end -o2.end; |
| 19 | +elsereturno2.start -o1.start; |
| 20 | + } |
| 21 | + }); |
| 22 | +intend =Integer.MIN_VALUE; |
| 23 | +intcount =0; |
| 24 | +for(Intervalinterval :intervals){ |
| 25 | +if(interval.start >=end)end =interval.end; |
| 26 | +elsecount++; |
| 27 | + } |
| 28 | +returncount; |
| 29 | + } |
| 30 | + |
| 31 | +publicstaticvoidmain(String...args){ |
| 32 | +//[[1,100],[11,22],[1,11],[2,12]] |
| 33 | +Intervalinterval1 =newInterval(1,100); |
| 34 | +Intervalinterval2 =newInterval(11,22); |
| 35 | +Intervalinterval3 =newInterval(1,11); |
| 36 | +Intervalinterval4 =newInterval(2,12); |
| 37 | +Interval[]intervals =newInterval[]{interval1,interval2,interval3,interval4}; |
| 38 | + |
| 39 | + |
| 40 | +System.out.println(eraseOverlapIntervals(intervals)); |
| 41 | + } |
| 42 | + |
| 43 | +} |