Добрый день.
есть пара временных массивов в виде:
Array
(
[0] => Array
(
[from] => 1097562600
[to] => 1097577000
)
[1] => Array
(
[from] => 1097578800
[to] => 1097582400
)
[2] => Array
(
[from] => 1097583000
[to] => 1097586300
)
)
Array
(
[0] => Array
(
[from] => 1097562501
[to] => 1097577000
)
[1] => Array
(
[from] => 1097578800
[to] => 1097582400
)
[2] => Array
(
[from] => 1097583000
[to] => 1097586300
)
)
from - время начала интервала
to - время конца интервала
Требуется выполнить простейшую оперцию из теории множеств - объединение!
Т.е. получить результирующий массив отрезков, которые бы внутри себя содержали все отрезки из обоих массивов...
Кто-нибудь сталкивался с подобной задачей? Каков примерный алгоритм решения?
Если брать решение в лоб, то получается так:
-взять первый отрезок первого массива
-проверить не накладывается ли на него какой-нибудь отрезок из 2-го массива
-если накладывается(и выходит за границы), то первый элемент результирующего массива будет объединять эти отрезки
- проверить, остались ли отрезки первого массивы, вне границ первого результирующего отрезка
- если остались, то взять этот первый элемент и аналогично сравнить его со всеми элементами 2-го массива, которые выходят за его границы....
Каждый из этих пунктов - это уже объемный кусок кода. Может даже реккурсию придется применять....
Интересно, есть какие-нибудь более простые варианты решения данной задачи....