Я ищу алгоритм для преобразования нескольких диапазонов дат в их «базовые» диапазоны.
Этот базовый уровень означает, что он имеет наименьшее количество отдельных диапазонов дат.Таким образом, перекрывающиеся или последовательные диапазоны должны быть объединены в один диапазон.
С двумя диапазонами сравнение довольно просто:
if (endA >= startB && endB >= startA) > Overlap and merge them
Но что, если объединенный AB отступит от третьего диапазона дат C ...
A: 2 April - 10 April
B: 5 April - 14 April
C: 15 April - 25 April
D: 28 April - 1 May
Тогда это должноВ результате:
2 April - 25 April
28 April - 1 May
Есть ли какие-либо указатели о том, как решить этот алгоритм?Как определить окончание иттерации, например, когда база достигнута?