给定一个无重叠的,按照区间起点升序排列的区间列表,在列表中插入一个新区间,如果有原区间有重合,则合并,请返回插入后的区间列表。
数据范围:区间列表长度满足 , 区间的左右端点满足
class Solution: def insertInterval(self , Intervals: List[Interval], newInterval: Interval) -> List[Interval]: # write code here if len(Intervals) == 0: return [newInterval] res = [] res.append(Intervals[0]) selected = False for i in range(len(Intervals)): if not selected: if self.is_interval_intersect(newInterval, res[-1]): res[-1].start = min(res[-1].start, newInterval.start) res[-1].end = max(res[-1].end, newInterval.end) selected = True if self.is_interval_intersect(res[-1], Intervals[i]): res[-1].start = min(res[-1].start, Intervals[i].start) res[-1].end = max(res[-1].end, Intervals[i].end) else: res.append(Intervals[i]) if not selected: res.append(newInterval) return res def is_interval_intersect(self, i1, i2): a1,b1 = i1.start,i1.end a2,b2 = i2.start,i2.end if a1 <= a2 <= b1&nbs***bsp;a1 <= b2 <= b1&nbs***bsp;a2 <= a1 <= b2: return True else: return False