меня есть диапазоны скажемЛучший алгоритм поиска пересечения и перекрытия диапазонов и хранения результирующего диапазона, установленного
- 1-10
- 20-40
- 30-50
- 55-65
- 65-80
- 75-90
- 95-100
Как и в этом примере, 20-40 и 30-50 пересекаются вместо того, чтобы хранить как я должен хранить его как 20-50.
Тогда вместо 55-65,65-80 и 75-90 Я хочу хранить только 55-90.
Таким образом, результирующий набор будет как этот
- 1-10
- 20-50
- 55-90
- 95-100
У меня есть эти значения в redis и структура, которую я храню на Java, представляют собой массивы start и end array.
Мое решение:
for int i =0; i< length-1 ; i++
for int j=i+1;j<length; j++
if start[i] <= start[j] && end[i] >= start[j]
store the min max in start and end array and remove the other two entries and proceed
Я нашел это, как O (N журнал N) есть ли лучший алгоритм, чтобы сделать это?
Любые предложения в структуре данных, как в Java, так и в redis, и подход или алгоритм для обработки этого были бы замечательными.
Благодаря
Всегда ли они сортируются? Если это так, lib, который не может предположить, что будет медленнее, чем информированный алгоритм. –
@ Frederik.L это почти всегда верно, но если производительность не вызывает беспокойства (для этого нужно было бы миллионы диапазонов, чтобы это было проблемой), проверенный и надежный библиотечный код всегда предпочтительнее доморощенного. –
@BoristheSpider Согласен, но OP запросил лучший алгоритм. Он не спрашивал о наиболее последовательном и готовом к производству способе. Только мои два цента. –