У меня есть два набора диапазонов, представленных значениями [start, stop].Некоторые диапазоны перекрываются, что означает, что начало одного диапазона находится между [началом, остановом] другого диапазона.Я хотел бы создать новый набор диапазонов, который не имеет такого перекрытия, а также не содержит никаких новых значений в диапазоне.
Диапазоны выглядят так:
@starts @ends
5 108
5 187
44 187
44 229
44 236
64 236
104 236
580 644
632 770
Ожидаемый результат будет следующим:
@starts @ends
5 236
580 770
Это потому, что первые семь диапазонов перекрываются с интерваломиз 5 => 236, и последние два перекрываются с интервалом от 632 => 770.
Вот код, который я пробовал:
$fix = 0;
foreach (@ends) {
if ($starts[$fix + 1] < $ends[$fix]) {
splice(@ends, $fix, $fix);
splice(@starts, $fix + 1, $fix + 1);
} else {
$fix += 1;
}
}
Я могу распечатать значения самостоятельно,Мне просто нужна помощь с алгоритмом слияния.