Es sei eine Liste positiver Ganzzahlen ohne bestimmte Reihenfolge, die Duplikate enthalten können. Schreiben Sie ein Programm oder eine Funktion, die eine Liste positiver Ganzzahlen M ausgibt (deren Reihenfolge unwichtig ist), so dass durch Zusammenführen von L und M die kleinste Liste entsteht, die sich vollständig in identische Bereiche von Ganzzahlen [ 1 .. i ] aufteilen lässt , wobei i die ist größtes Element in L
Beispiel
Lassen L = [5,3,3,2,7]
. Das maximale Element von L
ist 7
. Das häufigste Vorkommen einer bestimmten Ganzzahl ist 2
( 3
erscheint zweimal). Daher müssen wir die Liste ausgeben M
, die das Vervollständigen ermöglicht, L
damit wir 2
Bereiche von ganzen Zahlen von 1
bis konstruieren können 7
.
Daher müssen wir ausgeben M = [1,1,2,4,4,5,6,6,7]
, damit jede Ganzzahl von 1
bis mal 7
erscheint 2
.
Eingänge und Ausgänge
- Verwenden Sie in Ihrer Sprache alles, was Listen ähnelt. Die für die Eingabe und die Ausgabe verwendete Datenstruktur muss identisch sein.
- Die Eingabeliste enthält nur positive ganze Zahlen.
- Die Eingabeliste wird nicht leer sein.
- Sie können nicht davon ausgehen, dass die Eingabeliste sortiert ist.
- Die Reihenfolge in der Ausgabeliste ist unwichtig.
Testfälle
Input Output
[1] []
[7] [1, 2, 3, 4, 5, 6]
[1, 1, 1] []
[1, 8] [2, 3, 4, 5, 6, 7]
[3, 3, 3, 3] [1, 1, 1, 1, 2, 2, 2, 2]
[5, 2, 4, 5, 2] [1, 1, 3, 3, 4]
[5, 2, 4, 5, 5] [1, 1, 1, 2, 2, 3, 3, 3, 4, 4]
[5, 3, 3, 2, 7] [1, 1, 2, 4, 4, 5, 6, 6, 7]
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
i
ist das größte Element von L
, es war ein Tippfehler in den Spezifikationen.
M=[1,1,2,2,3]
zu , L=[3]
während „Verschmelzung L und M führt zu einer Liste , die in identische Bereiche von ganzen Zahlen ganz aufspalten [1..i]“?
[1,2]
. Ich werde es klarstellen, damit klar ist, dass es die minimale Anzahl von Bereichen ergeben sollte.
i
das größte Element vonL
oderM
?