In dieser einfachen Herausforderung erhalten Sie ein Eingabearray Lmit nicht negativen ganzen Zahlen und einer Anzahl von Bins, die bgrößer als 0, aber nicht länger als 1 sind L. Ihr Code muss ein neues Array zurückgeben, Mdessen Länge bder Block des Arrays ist L. Dies wird am einfachsten anhand von Beispielen erklärt.
L = [1,0,5,1]und b = 2kehrt zurück M = [1,6].
L = [0,3,7,2,5,1]und b = 3kehrt zurück M = [3,9,6].
So weit, so einfach. In dieser Frage bmuss 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 = 4kehrt 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 1und beitragenden Nummern enthält 2.
L = [0,3,7,2,5]und b = 2kehrt zurück M = [10,7]. M = [3, 14]ist keine akzeptable Ausgabe, da der letzte Bin 3Elemente enthält, die dazu beitragen, der erste jedoch nur 2.
L = [1,1,1,1,1,1,1]und b = 3kehrt 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