Dans ce défi simple, vous obtenez un tableau d'entrée L
d'entiers non négatifs et un nombre de cases b
supérieur à 0 mais pas plus que la longueur de L
. Votre code doit renvoyer un nouveau tableau M
dont la longueur est b
et qui a regroupé le tableau L
. Ceci est expliqué plus facilement avec des exemples.
L = [1,0,5,1]
et b = 2
retourne M = [1,6]
.
L = [0,3,7,2,5,1]
et b = 3
retourne M = [3,9,6]
.
Jusqu'à présent, si simple. Cependant, dans cette question b
ne doit pas nécessairement diviser len(L)
. Dans ce cas, le dernier bac aura juste moins de numéros à composer.
Chaque bac, sauf éventuellement le dernier, doit avoir le même nombre de chiffres contribuant à son total. Le dernier bac ne doit pas avoir plus de numéros qui y contribuent que les autres bacs. Le dernier bac doit avoir autant de numéros qui y contribuent que possible sous réserve des autres règles.
L = [0,3,7,2,5,1]
et b = 4
retourne M = [3,9,6,0]
. M = [10,8,0,0]
n'est pas une sortie acceptable car le troisième bac n'a pas le nombre de nombres qui y contribuent en tant que bacs 1
et 2
.
L = [0,3,7,2,5]
et b = 2
retourne M = [10,7]
. M = [3, 14]
n'est pas une sortie acceptable car le dernier bin aura des 3
éléments qui y contribueront mais le premier n'en aura que 2
.
L = [1,1,1,1,1,1,1]
et b = 3
retourne M = [3,3,1]
.
En règle générale, votre code doit s'exécuter en temps linéaire.
Vous pouvez utiliser n'importe quelle langue ou bibliothèque que vous aimez et pouvez supposer que l'entrée est fournie de la manière qui vous convient.
Il s'avère que certaines entrées ne peuvent pas être résolues. Par exemple [1,1,1,1,1]
et b=4
. Votre code peut sortir ce qu'il veut pour ces entrées.
your code must run in linear time
- Je trouverais tout algorithme qui ne suit pas cela naturellement assez bizarre