Определение «базы» для нескольких диапазонов дат, объединяющих перекрывающиеся диапазоны - PullRequest
1 голос
/ 08 апреля 2019

Я ищу алгоритм для преобразования нескольких диапазонов дат в их «базовые» диапазоны.

Этот базовый уровень означает, что он имеет наименьшее количество отдельных диапазонов дат.Таким образом, перекрывающиеся или последовательные диапазоны должны быть объединены в один диапазон.

С двумя диапазонами сравнение довольно просто:

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

Есть ли какие-либо указатели о том, как решить этот алгоритм?Как определить окончание иттерации, например, когда база достигнута?

1 Ответ

0 голосов
/ 08 апреля 2019

Если исходный список может создавать несколько диапазонов (что указывает пример данных), то важно обработать исходный список в порядке даты начала.

Первый элемент, A, становится baseRange, затем последующие элементы объединяются с baseRange , а не с предыдущим элементом.Это делается с диапазоном, когда if возвращает false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...