Здравствуйте, pASkuda, Вы писали:
AS>Вот собственно стоит такая задчка: есть массив закрытых интервалов, нужно объединить те которые имеют пересечение. Я налабал на шарпе, но это однозначно не оптимально, может кто знает более короткое решение (у гогля спрашивал – не нашел)
Берем все точки интервалов (начальные и конечные), сортируем их по возрастанию. При равных координатах сначала идут начальные точки. Дальше заводим счетчик, изначально равный нулю. Идем по всем точкам слева направо; когда встречаем начальную точку, увеличиваем счетчик на единицу, когда встречаем конечную, уменьшаем на единицу. Когда счетчик переходит из значения 0 в значение 1 — запоминаем текущую точку как начальную нового интервала. Когда наоборот, из 1 в 0 создаем интервал с началом в запомненной точке и концом в текущей и пихаем его в результат.