start[i+1] <= end[i]
인 경우, overlap으로 판단class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
answer = []
intervals.sort()
semiAns = intervals[0]
for start, end in intervals[1:]:
if start <= semiAns[1]:
# overlapped
semiAns[1] = max(semiAns[1], end) # new interval's end can be bigger
else:
answer.append(semiAns.copy())
semiAns = [start, end]
answer.append(semiAns)
return answer
[[1,1], [2,3], [4,7], [5,6]]
[[1,7], [2,5], [3,4]]
근데 다른 사람들 풀이도 나랑 비슷한데 왜 16.88% 밖에 안되는지 모르겠다...