In dieser einfachen Herausforderung erhalten Sie ein Eingabearray L
mit nicht negativen ganzen Zahlen und einer Anzahl von Bins, die b
größer als 0, aber nicht länger als 1 sind L
. Ihr Code muss ein neues Array zurückgeben, M
dessen Länge b
der Block des Arrays ist L
. Dies wird am einfachsten anhand von Beispielen erklärt.
L = [1,0,5,1]
und b = 2
kehrt zurück M = [1,6]
.
L = [0,3,7,2,5,1]
und b = 3
kehrt zurück M = [3,9,6]
.
So weit, so einfach. In dieser Frage b
muss man sich jedoch nicht unbedingt teilen len(L)
. In diesem Fall enthält der letzte Behälter nur weniger Zahlen, um ihn zu bilden.
Jeder Behälter, außer möglicherweise der letzte, muss die gleiche Anzahl von Zahlen aufweisen, die zur Gesamtsumme beitragen. Das letzte Fach darf nicht mehr Nummern enthalten als die anderen Fächer. Der letzte Behälter muss so viele Zahlen wie möglich enthalten, abhängig von den anderen Regeln.
L = [0,3,7,2,5,1]
und b = 4
kehrt zurück M = [3,9,6,0]
. M = [10,8,0,0]
ist keine akzeptable Ausgabe, da der Name der dritten Bin nicht die Anzahl der als Bins 1
und beitragenden Nummern enthält 2
.
L = [0,3,7,2,5]
und b = 2
kehrt zurück M = [10,7]
. M = [3, 14]
ist keine akzeptable Ausgabe, da der letzte Bin 3
Elemente enthält, die dazu beitragen, der erste jedoch nur 2
.
L = [1,1,1,1,1,1,1]
und b = 3
kehrt zurück M = [3,3,1]
.
Als letzte Regel muss Ihr Code in linearer Zeit ausgeführt werden.
Sie können eine beliebige Sprache oder Bibliothek verwenden und davon ausgehen, dass die Eingabe auf eine von Ihnen gewünschte Weise erfolgt.
Es stellt sich heraus, dass es einige Eingaben gibt, die nicht gelöst werden können. Zum Beispiel [1,1,1,1,1]
und b=4
. Ihr Code kann für diese Eingaben alles ausgeben, was er möchte.
your code must run in linear time
- Ich würde jeden Algorithmus finden, der diesem natürlich nicht ganz komisch folgt