Sort the list first. Check if the new interval overlaps with the previous one in the output list. If yes, update it. Otherwise, append the new one.
class Solution(object): def merge(self, intervals): """ :type intervals: List[Interval] :rtype: List[Interval] """ if len(intervals) == 0: return  intervals = sorted(intervals, key = lambda x: x.start) res = [intervals] for n in intervals[1:]: if n.start <= res[-1].end: res[-1].end = max(n.end, res[-1].end) else: res.append(n) return res
@Froxie How did you come up with this solution?
Would you like to share your thought process!