先根据左边界排序,然后用双指针合并
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals = sorted(intervals, key=lambda x: x[0])
ans = []
l, r = intervals[0][0], intervals[0][1]
for i in intervals:
if i[0] > r:
ans.append([l, r])
l, r = i[0], i[1]
else:
r = max(r, i[1])
ans.append([l, r])
return ans