En este desafío simple, se le proporciona una matriz L
de entrada de enteros no negativos y una cantidad de bins b
mayor que 0 pero no mayor que la longitud de L
. Su código debe devolver una nueva matriz M
cuya longitud es b
y que ha agrupado la matriz L
. Esto se explica más fácilmente con ejemplos.
L = [1,0,5,1]
y b = 2
vuelve M = [1,6]
.
L = [0,3,7,2,5,1]
y b = 3
vuelve M = [3,9,6]
.
Hasta ahora, muy simple. Sin embargo, en esta pregunta b
no necesariamente tiene que dividirse len(L)
. En este caso, el último contenedor tendrá menos números para compensarlo.
Cada contenedor, excepto posiblemente el último, debe tener el mismo número de números que contribuyen a su total. El último contenedor no debe tener más números que contribuyan a él que los otros contenedores. El último contenedor debe tener tantos números contribuyendo como sea posible sujeto a las otras reglas.
L = [0,3,7,2,5,1]
y b = 4
vuelve M = [3,9,6,0]
. M = [10,8,0,0]
no es una salida aceptable ya que el tercer bin no tiene el número de nombres que contribuyen a él como bins 1
y 2
.
L = [0,3,7,2,5]
y b = 2
vuelve M = [10,7]
. M = [3, 14]
no es una salida aceptable ya que el último bin tendrá 3
elementos que contribuyen a él, pero el primero solo tiene 2
.
L = [1,1,1,1,1,1,1]
y b = 3
vuelve M = [3,3,1]
.
Como regla final, su código debe ejecutarse en tiempo lineal.
Puede usar cualquier idioma o biblioteca que desee y puede asumir que la entrada se proporciona de la forma que le resulte conveniente.
Resulta que hay algunas entradas que no se pueden resolver. Por ejemplo [1,1,1,1,1]
y b=4
. Su código puede generar lo que quiera para esas entradas.
your code must run in linear time
- Encontraría cualquier algoritmo que no siga esto naturalmente bastante extraño