Алгоритм удаления пересекающихся отрезков
Сама задача не с отрезками, но упростил нужную мне часть для отрезков
Задача: Есть массив отрезков. Нужно найти пересекающиеся отрезки и оставить только те, у которых большая длина.
Пример:
2 отрезка: (0; 2) (2; 5) пересекаются в пункте 2, (0; 2) нужно удалить, т.к. он меньше.
3 отрезка (0; 2) (длина 3) (1; 4) (длина 4) (4; 8) (длина 5)
Нужно оставить (0; 2) и (4; 8), т.к. они не пересекаются, (1; 4) удаляется, т.к. пересекается с (4; 8) и (4; 8) длиннее. Но если бы отрезки были (0; 2) (1; 4) и (5; 9) то остались бы (1; 4) и (5; 9)
Вообще сама цель такая (м.б. если не понятно объяснил, что-то тут прояснится): есть dictionary последовательности слов (для замены этой последовательности на другую строку ["1st"...])
"a":
"b":
"c": "1st"
На основе этой dictionary строку "a b c d e f g h i" => заменим на "1st d e f g h i"
если к имеющейся dictionary добавим элемент:
"c":
"d":
"e":
"f": "2nd"
то строка "a b c d e f g h i" => заменится уже на "a b 2nd g h i" если к имеющейся элементам добавим еще элемент:
"e":
"f":
"g":
"h":
"i": "3rd"
то так как "c d e f" меньше чем "d e f h i" , "c d e f" мы удаляем, и хоть "a b c" не нужно удалять теперь, и по итогу получается "a b c d e f g h i" => "1st d 3rd"
P.S. Сорри если что не понятно объяснил