Я снабжен M сегментами [L, R] из N элементов массива. Мне нужно изменить эти сегменты таким образом, чтобы все сегменты имели попарно различные левые концы.Сделать сегменты попарно непересекающимися слева.
Пример: предположим, что у нас есть 5 элементов в массиве, и у нас есть 4 сегмента: [1,2], [1,3], [2,4] и [4,5], после чего все левые концы попарно не пересекаются, мы имеем [1,2], [3,3], [2,4] и [4,5]. Все сегменты имеют разные левые концы.
Основной вопрос состоит в том, чтобы все пары попарно не пересекались с левый конец. Если они являются двумя перекрывающимися парами, скажите [1,3] и [1,4], то измените их на [1,3] и [4,4]. Какой лучший подход к его обработке?
Да, мы не можем переместить правый конец. И разве невозможно, что после увеличения левого конца на +1 он теперь станет равным левому концу какого-либо другого сегмента? – user3266827
хорошо, обратите внимание, что наши сегменты сначала сортируются на основе их левых концов. Итак, скажем, мы увеличиваем 1-й сегмент слева на 1, а новый левый конец i-го сегмента сталкивается с левым концом i + 1-го сегмента. Не беспокойтесь об этом, потому что в следующей итерации i + 1-й сегмент будет сравнивать свой левый конец и соответственно изменится. Кстати, если нам не разрешено перемещать правый конец любого сегмента, тогда могут быть случаи, когда цель невозможно достичь. – Fallen