Einführung
Angenommen, Sie möchten die Endmaxima einer Liste von Zahlen berechnen, dh das Maximum jedes nicht leeren Suffixes. Eine Möglichkeit besteht darin, wiederholt eine Nummer auszuwählen und durch eine höhere Nummer zu ersetzen, bis dies nicht mehr möglich ist. In dieser Herausforderung besteht Ihre Aufgabe darin, einen Schritt dieses Algorithmus auszuführen.
Die Aufgabe
Ihre Eingabe ist eine Liste von Ganzzahlen L , die leer sein können. Ihre Ausgabe soll die Liste L sein, in der genau eine Zahl L i durch eine andere L j ersetzt wurde , wobei L i <L j und i <j .
Mit anderen Worten, Sie müssen eine Zahl durch eine höhere Zahl ersetzen, die danach auftritt.
Sie können i und j unter allen gültigen Paaren frei wählen , und die Wahl kann nicht deterministisch sein.
Wenn solche i und j nicht existieren (dh L nicht ansteigend ist), soll Ihre Ausgabe L unverändert sein.
Beispiel
Betrachten Sie die Eingabe L = [3, 1, 4, -1, 2] . Die möglichen Operationen sind 3 durch 4 zu ersetzen, 1 durch 4 zu ersetzen, 1 durch 2 zu ersetzen oder -1 durch 2 zu ersetzen . Somit sind die möglichen Ausgaben:
[ 3 , 1 , 4 , -1 , 2 ]
------------------------------
[( 4), 1 ,( 4), -1 , 2 ]
[ 3 ,( 4),( 4), -1 , 2 ]
[ 3 ,( 2), 4 , -1 ,( 2)]
[ 3 , 1 , 4 ,( 2),( 2)]
Wenn Sie die Operation genügend oft wiederholen, ist das Endergebnis [4,4,4,2,2] , was genau die Liste der Schwanzmaxima von L ist .
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Im letzteren Fall können Sie die Eingabe ändern, anstatt ein neues Array zurückzugeben, sofern Ihre Sprache dies zulässt. Eingabe- und Ausgabeformate sind innerhalb angemessener Grenzen flexibel.
Die niedrigste Byteanzahl gewinnt.
Testfälle
Alle möglichen Ausgaben werden angezeigt.
[] -> []
[1] -> [1]
[1,2] -> [2,2]
[2,1] -> [2,1]
[4,4,4,4] -> [4,4,4,4]
[-1,-3,-10] -> [-1,-3,-10]
[1,3,10] -> [3,3,10] [10,3,10] [1,10,10]
[1,1,2,1] -> [2,1,2,1] [1,2,2,1]
[998,64,2,-94,-789] -> [998,64,2,-94,-789]
[998,2,64,-94,-789] -> [998,64,64,-94,-789]
[3,1,4,-1,2] -> [4,1,4,-1,2] [3,4,4,-1,2] [3,2,4,-1,2] [3,1,4,2,2]
[-1,4,0,4,7,2,3] -> [4,4,0,4,7,2,3] [0,4,0,4,7,2,3] [-1,4,4,4,7,2,3] [7,4,0,4,7,2,3] [-1,7,0,4,7,2,3] [-1,4,7,4,7,2,3] [-1,4,0,7,7,2,3] [2,4,0,4,7,2,3] [-1,4,2,4,7,2,3] [3,4,0,4,7,2,3] [-1,4,3,4,7,2,3] [-1,4,0,4,7,3,3]
[3542,-12311,7662,1672,6081] -> [7662,-12311,7662,1672,6081] [3542,7662,7662,1672,6081] [3542,1672,7662,1672,6081] [6081,-12311,7662,1672,6081] [3542,6081,7662,1672,6081] [3542,-12311,7662,6081,6081]
x=>x.map(c=>c<x[++i]&!d?x[d=i]:c,d=i=0)
?