Dividir em blocos com soma máxima N

Published by Mubashir Hassan in

Escreva uma função que divida um array em blocos de modo que a soma de cada bloco seja <= n. Comece pelo lado esquerdo do array e avance para a direita.

Exemplos

divide([1, 2, 3, 4, 1, 0, 2, 2], 5)
➞ [[1, 2], [3], [4, 1, 0], [2, 2]]

divide([1, 0, 1, 1, -1, 0, 0], 1)
➞ [[1, 0], [1], [1, -1, 0, 0]]

divide([2, 1, 0, -1, 0, 0, 2, 1, 3], 3)
➞ [[2, 1, 0, -1, 0, 0], [2, 1], [3]]

Observações

  • O maior valor do array sempre será menor ou igual a n.
  • Use a abordagem gulosa para resolver o problema (por exemplo, coloque o maior número possível de elementos em um bloco, desde que a restrição da soma seja satisfeita).