Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Merge Intervals by Sillte
def merge_intervals(intervals):
def _merge(t1, t2):
t1, t2 = sorted((t1, t2), key=lambda t: t[0])
if t1[1] + 1 < t2[0]:
return t1, t2
return (t1[0] , max(t1[1], t2[1])), None
current_intervals = list(intervals)
while True:
is_merged = False
for i in range(len(current_intervals)):
if current_intervals[i] is None:
continue
for j in range(i + 1, len(current_intervals)):
current_intervals[i], current_intervals[j] = _merge(current_intervals[i], current_intervals[j])
if current_intervals[j] is None:
is_merged = True
if is_merged is False:
break
current_intervals = [elem for elem in current_intervals if elem]
return current_intervals
Aug. 19, 2018