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 una secuencia no vacía de valores contiguos y las partes mantienen 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 puede alcanzar 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] tiene sumas de 8, 13 y 10, así que su costo es 13. Ninguna división tiene un costo de 12: al empaquetar las partes de izquierda a derecha con cada suma como máximo de 12, se obtiene [6, 2], [9], [4, 7], [3], cuatro partes cuando solo se permiten tres.

lock icon+20 pruebas ocultas al enviar

challenge icon

Para ir más allá

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

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

13