:type intervals: List[Interval] :type newInterval: Interval :rtype: List[Interval]
(self, intervals, newInterval)
| 6 | |
| 7 | class Solution(object): |
| 8 | def insert(self, intervals, newInterval): |
| 9 | """ |
| 10 | :type intervals: List[Interval] |
| 11 | :type newInterval: Interval |
| 12 | :rtype: List[Interval] |
| 13 | """ |
| 14 | if intervals is None or len(intervals) == 0: |
| 15 | return [newInterval] |
| 16 | intervals.sort(key=lambda x:x.start) |
| 17 | pos = 0 |
| 18 | while pos < len(intervals): |
| 19 | # left of pos |
| 20 | if newInterval.end < intervals[pos].start: |
| 21 | intervals.insert(pos, newInterval) |
| 22 | return intervals |
| 23 | # overlap with pos |
| 24 | if self.check_overlap(intervals[pos], newInterval): |
| 25 | temp = intervals.pop(pos) |
| 26 | newInterval = self.merge_intervals(temp, newInterval) |
| 27 | else: |
| 28 | pos += 1 |
| 29 | if len(intervals) == 0 or pos == len(intervals): |
| 30 | intervals.append(newInterval) |
| 31 | return intervals |
| 32 | |
| 33 | def check_overlap(self, curr_int, new_int): |
| 34 | if curr_int.start <= new_int.start: |
no test coverage detected