In questa semplice sfida ti viene dato un array L
di input di numeri interi non negativi e un numero di bin b
maggiore di 0 ma non superiore alla lunghezza di L
. Il codice deve restituire un nuovo array la M
cui lunghezza è b
e che ha vincolato l'array L
. Questo è più semplice spiegato con esempi.
L = [1,0,5,1]
e b = 2
ritorna M = [1,6]
.
L = [0,3,7,2,5,1]
e b = 3
ritorna M = [3,9,6]
.
Finora così semplice. Tuttavia, in questa domanda b
non è necessario dividere necessariamente len(L)
. In questo caso l'ultimo cestino avrà solo un minor numero di numeri per inventarlo.
Ogni bin tranne forse l'ultimo deve avere lo stesso numero di numeri che contribuiscono al suo totale. L'ultimo cestino non deve contenere più numeri rispetto agli altri bin. L'ultimo cestino deve avere il maggior numero possibile di contributi in base alle altre regole.
L = [0,3,7,2,5,1]
e b = 4
ritorna M = [3,9,6,0]
. M = [10,8,0,0]
non è un output accettabile in quanto il terzo bin non ha il nome numero di numeri che vi contribuiscono come bin 1
e 2
.
L = [0,3,7,2,5]
e b = 2
ritorna M = [10,7]
. M = [3, 14]
non è un output accettabile poiché l'ultimo bin avrà 3
elementi che contribuiscono ad esso, ma il primo ha solo 2
.
L = [1,1,1,1,1,1,1]
e b = 3
ritorna M = [3,3,1]
.
Come regola finale, il codice deve essere eseguito in tempo lineare.
È possibile utilizzare qualsiasi lingua o libreria che ti piace e puoi presumere che l'input sia fornito in qualsiasi modo ritieni opportuno.
Si scopre che ci sono alcuni input che non possono essere risolti. Ad esempio [1,1,1,1,1]
e b=4
. Il tuo codice può generare qualsiasi cosa gli piaccia per quegli input.
your code must run in linear time
- Troverei qualsiasi algoritmo che non segua questo naturalmente abbastanza strano