Menu
CoddyTech

Split Array Largest Sum

Você recebe um array nums de inteiros não negativos e um inteiro k. Divida nums em exatamente k partes, em que cada parte é uma sequência não vazia de valores vizinhos e as partes mantêm a ordem. Cada parte tem uma soma, e o custo de uma divisão é a maior dessas somas.

Retorne o menor custo que qualquer divisão em k partes pode alcançar.

Função

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
os valores não negativos, em ordem
kinteger
o número de partes contíguas em que cortá-los
Retornainteger
o menor valor possível da maior soma de partes

Restrições

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Cada parte contém pelo menos um valor. Uma parte cujos valores são todos 0 soma 0, o que é permitido.

Exemplos

Entrada
nums = [6, 2, 9, 4, 7, 3]k = 3
Saída
13
Explicação
A divisão [6, 2], [9, 4], [7, 3] custa 13. Nenhuma divisão custa 12: empacotar as partes da esquerda para a direita sob 12 resulta em [6, 2], [9], [4, 7], [3], quatro partes.
challenge icon

Para ir além

Com somas prefixadas, uma verificação gulosa pode encontrar onde cada parte termina por meio de busca binária. Qual é a velocidade do método completo quando k é pequeno?

Redefinir código
def splitArray(nums, k):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

nums = [6, 2, 9, 4, 7, 3]
k = 3

Saída Esperada

13