:type intervals: List[Interval] :rtype: List[Interval]
(self, intervals)
| 6 | |
| 7 | class Solution(object): |
| 8 | def merge(self, intervals): |
| 9 | """ |
| 10 | :type intervals: List[Interval] |
| 11 | :rtype: List[Interval] |
| 12 | """ |
| 13 | if intervals is None: |
| 14 | return |
| 15 | ls = len(intervals) |
| 16 | if ls <= 1: |
| 17 | return intervals |
| 18 | # sort by start |
| 19 | intervals.sort(key=lambda x: x.start) |
| 20 | pos = 0 |
| 21 | while pos < len(intervals) - 1: |
| 22 | # check overlap |
| 23 | if intervals[pos].end >= intervals[pos + 1].start: |
| 24 | next = intervals.pop(pos + 1) |
| 25 | # check next is overlap or totally covered by pos |
| 26 | if next.end > intervals[pos].end: |
| 27 | intervals[pos].end = next.end |
| 28 | # print [(t.start, t.end) for t in intervals], pos |
| 29 | else: |
| 30 | pos += 1 |
| 31 | return intervals |
| 32 | |
| 33 | if __name__ == '__main__': |
| 34 | # begin |
no test coverage detected