Menu
CoddyTech

Split Array Largest Sum

Recibes un arreglo nums de enteros no negativos y un entero k. Divide nums en exactamente k partes, donde cada parte es un tramo no vacío de valores contiguos y las partes conservan su orden. Cada parte tiene una suma, y el costo de una división es la mayor de esas sumas.

Devuelve el menor costo que se puede alcanzar con cualquier división en k partes.

Función

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
los valores no negativos, en orden
kinteger
la cantidad de partes contiguas en las que cortarlos
Devuelveinteger
el menor valor posible de la suma de la parte más grande

Restricciones

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Cada parte contiene al menos un valor. Una parte cuyos valores son todos 0 suma 0, lo cual está permitido.

Ejemplos

Entrada
nums = [6, 2, 9, 4, 7, 3]k = 3
Salida
13
Explicación
La división [6, 2], [9, 4], [7, 3] cuesta 13. Ninguna división cuesta 12: al empaquetar las partes de izquierda a derecha con un límite de 12, se obtiene [6, 2], [9], [4, 7], [3], cuatro partes.
challenge icon

Para ir más allá

Con sumas de prefijos, una comprobación voraz puede encontrar dónde termina cada parte mediante búsqueda binaria. ¿Qué tan rápido se vuelve todo el método cuando k es pequeño?

Restablecer código
def splitArray(nums, k):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

13