Ich habe versucht, this Problem auf spoj, nicht in der Lage, mit dem richtigen Ansatz zu kommen. Was ist der richtige Algo, um das Problem zu lösen?Mindestanzahl von Operationen, um ein Array sortiert zu machen
Antwort
Sie sollten die längste aufeinanderfolgende ansteigende Untersequenz finden, die in O (n log n) (durch Sortierung des Arrays) durchgeführt werden kann. Danach ist die Anzahl der erforderlichen Änderungen N - longest consecutive increasing subsequence
. Beachte, dass ich mit "konsekutiv" meine Ordnung in sortierter Anordnung meine.
Beispiel:
1 7 6 2 5 4 3 => 1-2-3 am längsten ist in Folge zunehmende Subsequenz, Anzahl von Zügen erforderlich ist 4.
1 6 4 3 5 2 7 => 1-2 oder 4-5 oder 6-7 ist längste Subsequenz konsekutiver Erhöhung zu beachten, dass 1-4-5-7 ist längst zunehmende Subsequenz aber Anzahl von Zügen erforderlich ist 5 nicht 3.
Warum das funktioniert:
besten Algorithmus nicht hat einige von einem Artikel Orte ändert, rufen größte Teilfolge ohne Änderungen als X
, man wird nicht die Position der X
Elemente zueinander während Operationen zusammenhängen ändern, so sollten sie in Erhöhungsmodus sortiert werden. Da Sie jedoch nur einige Elemente im ersten oder letzten Array verschoben haben, können Sie keine Elemente zwischen X
Elemente einfügen (wir haben angenommen, dass X
die größte unveränderte Teilsequenz während der Operationen ist). Daher sollte keine Lücke zwischen X
bestehen Artikel. Daher sollten sie in sortiertem Format sortiert und fortlaufend sortiert werden.
So Anzahl der erforderlichen Änderungen könnte nicht kleiner sein als die N- length of X
, aber es ist auch nicht schwer, Ihre Arbeit mit N-length of X operation
zu tun.
- 1. jquery schieben, um multidimensionales Array zu machen
- 2. sortiert das Array von Objekten
- 3. bestimmen, welche Permutation Sortierung ein Array sortiert
- 4. Überprüfen, ob ein Array sortiert ist
- 5. ein effizienter Weg, um einige numpy Operationen
- 6. Objective-C, sortiert ein Array von Strings Zahlen
- 7. Git: Alle Operationen abbrechen, um ein sauberes Arbeitsverzeichnis zu erhalten
- 8. Schnelle JavaScript-Array-Operationen
- 9. Verschachtelung wählt, um Popularitätsalgorithmus zu machen
- 10. Stream Wrapper um Stream suchbar zu machen?
- 11. Verwenden von NSUserDefaults, um ein Array von Objekten zu speichern
- 12. Ein Kürzester-Pfad-Algorithmus mit der Mindestanzahl von überfahrenen Knoten
- 13. (tief), um ein Array zu kopieren jQuery
- 14. JavaScript wandelt ein Array in ein Array von Funktionen um
- 15. Zeiger in C#, um int Array zu machen?
- 16. std :: copy, um ein Array von Doubles in ein Array von Floats zu kopieren?
- 17. Java Eclipse sortiert und sortiert dann 1 Array, vielleicht mehr?
- 18. Funktion, die überprüft, ob ein Array sortiert ist
- 19. Wie jmeter Antwort auf ein Array zu speichern, um eine Anfrage mit dem gegebenen Array zu machen?
- 20. Mindestanzahl von Zeichen, die in eine Zeichenfolge eingefügt werden, um sie in Palindrom zu konvertieren
- 21. textarea html5 Validierung mit Mindestanzahl von Zeichen
- 22. - [NSOperationQueue-Operationen] gibt ein leeres Array zurück, wenn nicht?
- 23. Korrekter Weg, um ein Array von boost :: scoped_ptr zu initialisieren?
- 24. Machen ein zu viele Beziehung Array in JavaScript
- 25. Array-Operationen auf DASK-Arrays
- 26. Wie speichere ich Daten im Array, um sie in O (n) Zeit sortiert zu drucken?
- 27. Machen Sie ein Steuerelement "transparent", um Ereignisse zu klicken
- 28. JavaScript - Sortiert ein Array basierend auf einem anderen Array von ganzen Zahlen
- 29. machen einige Operationen auf Teilbündeln des Faktorbündels
- 30. Der beste Weg, um ein Modell Suchformular zu machen?
Mit "längste aufeinanderfolgende steigende Teilfolge" meinen Sie die längste gemeinsame Teilfolge der unsortierten und sortierten Sequenzen? – dasblinkenlight
@dasblinkenlight, nein, was du erwähntest ist am längsten zunehmende Subsequenz, mein Englisch ist nicht gut genug und ich weiß nicht, wie ich es gut erklären soll, ich habe versucht, es mit Beispiel zu veranschaulichen, zum Beispiel in '1 6 4 3 5 2 7 'was ich sagte, ist' 1,2', aber am längsten zunehmende Teilfolge ist '1,4,5,7', wenn nicht klar, bitte sagen Sie mir, es zu beschreiben, und wenn Sie verstehen, was ich meine, fühlen Sie sich frei, meine Antwort zu bearbeiten um es zu klären. –