Nesse simples desafio, você recebe uma matriz L
de números inteiros não negativos e um número de posições b
maior que 0, mas não maior que o comprimento de L
. Seu código deve retornar uma nova matriz M
cujo comprimento seja b
e que tenha colocado na matriz L
. Isso é mais fácil explicado com exemplos.
L = [1,0,5,1]
e b = 2
retorna M = [1,6]
.
L = [0,3,7,2,5,1]
e b = 3
retorna M = [3,9,6]
.
Até agora, tão simples. No entanto, nesta questão b
não precisa necessariamente se dividir len(L)
. Nesse caso, o último compartimento terá apenas menos números para compensar.
Cada compartimento, exceto possivelmente o último, deve ter o mesmo número de números contribuindo para o total. O último compartimento não deve ter mais números contribuindo para ele do que os outros compartimentos. O último compartimento deve ter o maior número possível de contribuintes, sujeito a outras regras.
L = [0,3,7,2,5,1]
e b = 4
retorna M = [3,9,6,0]
. M = [10,8,0,0]
não é uma saída aceitável, pois o terceiro compartimento não possui o número de nome de números que contribuem para ele como compartimentos 1
e 2
.
L = [0,3,7,2,5]
e b = 2
retorna M = [10,7]
. M = [3, 14]
não é uma saída aceitável, pois o último compartimento terá 3
elementos que contribuem para ele, mas o primeiro possui apenas 2
.
L = [1,1,1,1,1,1,1]
e b = 3
retorna M = [3,3,1]
.
Como regra final, seu código deve ser executado em tempo linear.
Você pode usar qualquer idioma ou biblioteca que desejar e pode assumir que a entrada é fornecida da maneira que achar conveniente.
Acontece que existem algumas entradas que não podem ser resolvidas. Por exemplo [1,1,1,1,1]
e b=4
. Seu código pode gerar o que quiser para essas entradas.
your code must run in linear time
- Eu encontraria qualquer algoritmo que não siga isso naturalmente bem estranho