|
2 | 2 |
|
3 | 3 | import com.blankj.structure.Interval;
|
4 | 4 |
|
5 |
| -import java.util.ArrayList; |
6 |
| -import java.util.Comparator; |
7 |
| -import java.util.List; |
| 5 | +import java.util.*; |
8 | 6 |
|
9 | 7 | /**
|
10 | 8 | * <pre>
|
@@ -44,5 +42,35 @@ public int compare(Interval o1, Interval o2) {
|
44 | 42 | public static void main(String[] args) {
|
45 | 43 | Solution solution = new Solution();
|
46 | 44 | Interval.print(solution.merge(Interval.createTestData("[1,3],[2,6],[8,10],[15,18]")));
|
| 45 | + Interval.print(solution.myMergeOverlap(Interval.createTestData("[1,3],[2,6],[8,10],[15,18]"))); |
| 46 | + Interval.print(solution.merge(Interval.createTestData("[1,3],[2,6],[8,15],[15,18]"))); |
| 47 | + Interval.print(solution.myMergeOverlap(Interval.createTestData("[1,3],[2,6],[8,15],[15,18]"))); |
| 48 | + |
| 49 | + } |
| 50 | + public List<Interval> myMergeOverlap(List<Interval> intervals) { |
| 51 | + if (intervals == null || intervals.size() == 0) { |
| 52 | + return null; |
| 53 | + } |
| 54 | + Collections.sort(intervals, new Comparator<Interval>() { |
| 55 | + @Override |
| 56 | + public int compare(Interval o1, Interval o2) { |
| 57 | + return o1.start - o2.start; |
| 58 | + } |
| 59 | + }); |
| 60 | + LinkedList<Interval> res = new LinkedList<>(); |
| 61 | + for (Interval interval : intervals) { |
| 62 | + if (res.isEmpty()) { |
| 63 | + res.add(interval); |
| 64 | + } else { |
| 65 | + Interval lastInterval = res.getLast(); |
| 66 | + if (lastInterval.end >= interval.start) { |
| 67 | + lastInterval.end = interval.end; |
| 68 | + } else { |
| 69 | + res.add(interval); |
| 70 | + } |
| 71 | + } |
| 72 | + } |
| 73 | + |
| 74 | + return res; |
47 | 75 | }
|
48 | 76 | }
|
0 commit comments