intervals
를 큐로 만들고 newInterval
의 start가 intervals[i]
에 속했을 때 두 번 popleft를 한 뒤에 appendleft를 하는 방식.intervals
중간에 있는 값을 바꾸기 어려움.그림을 그리면 3가지 경우를 쉽게 떠올릴 수 있다.
newInterval[1]
< interval[i][0]
newInterval
과 interval[i]
이 겹치지 않기 때문에 result에 newInterval
을 그대로 넣어주면 된다.
newInterval[0]
> interval[i][1]
이것도 둘이 겹치지 않는다. 이때는 result에 interval[i]
를 넣어준다.
겹칠 때
[min(starts), max(starts)]를 하면 된다.
class Solution:
def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
result = []
for i in range(len(intervals)):
if newInterval[1] < intervals[i][0]:
result.append(newInterval)
return result + intervals[i:]
elif newInterval[0] > intervals[i][1]:
result.append(intervals[i])
else:
newInterval = [min(newInterval[0], intervals[i][0]), max(newInterval[1], intervals[i][1])]
result.append(newInterval)
return result