Früher habe ich heute eine - scheinbar schlecht geformte und daher bereits gelöschte - Frage zum Entfernen überlappender Intervalle (oder Bereiche, Intervalle ab diesem Zeitpunkt) gesehen. Die Frage war, wie man Intervalle entfernt, die vollständig in anderen Intervallen liegen. Zum Beispiel haben wir folgendes:Entfernen von sich völlig überlappenden Intervallen oder Bereichen
1-2
2-3
1-3
2-4
oder wenn etwas besser sichtbar gemacht:
1-2
2-3
1---3
2---4
Intervalle 1-2
und 2-3
sind beide entfernt, da sie in dem Intervall enthalten sind 1-3
so wäre die Ausgabe:
A priori Algorithmus wäre wahrscheinlich jedes Intervall zu überprüfen gegen jeden anderen ergeben sich O (n) Vergleiche. Jemand hat vorgeschlagen, die Quelldaten vor der Verarbeitung zu sortieren, gibt es andere Aspekte für dieses Problem?
Offensichtliche Fälle sind (Daten sortiert):
1-3 remove
1--4
1-3 remove this or next
1-3
1--4
2-4 remove
1---5
2-4 remove
1-3 print this, maybe next depending on the one after that
2-4
Bitte, wenn Sie mit netten Fallen oder anderen Fällen in den Daten oder verbundenen Tags sie hinzufügen kommen.
Sie Spaltung, indem '-F-' ' – karakfa
Art file' wird alphabetisch sortiert, so' 10 vermeiden kann 'kommt vor' 2', etc. Sie brauchen etwas mehr wie 'sort-t'- '-k1 -k2 -n-Datei'. Überprüfen Sie das, da ich meine Sortierargumente immer durcheinander bringe, aber Sie bekommen die Idee, dass Sie jeden Teil des Bereichs numerisch und getrennt sortieren müssen. –
Und @Karakfa ist richtig - setze '-F '-'' und ersetze 'a [1]' durch '$ 1', etc. Ich habe das Gefühl, dass es ohne so viele" Next "s aber IDK weiter vereinfacht werden könnte ... –