V_>Берем все точки интервалов (начальные и конечные), сортируем их по возрастанию. При равных координатах сначала идут начальные точки. Дальше заводим счетчик, изначально равный нулю. Идем по всем точкам слева направо; когда встречаем начальную точку, увеличиваем счетчик на единицу, когда встречаем конечную, уменьшаем на единицу. Когда счетчик переходит из значения 0 в значение 1 — запоминаем текущую точку как начальную нового интервала. Когда наоборот, из 1 в 0 создаем интервал с началом в запомненной точке и концом в текущей и пихаем его в результат.