Menu
CoddyTech

Maximum Subarray

Recibes una lista de números enteros nums. Un subarreglo es un tramo de elementos vecinos tomado sin saltos, y debe contener al menos un elemento. Devuelve la suma más grande que pueda tener cualquier subarreglo de nums. Devuelve solo la suma, no el subarreglo en sí.

Función

maxSubArray(nums: integer-array) → integer
numsinteger-array
la lista de números enteros, con al menos un elemento
Devuelveinteger
la suma más grande de una secuencia no vacía de elementos vecinos

Restricciones

  • 1 ≤ nums.length ≤ 105
  • -104 ≤ nums[i] ≤ 104
  • La respuesta siempre cabe en un entero con signo de 32 bits.

Ejemplos

Entrada
nums = [2, -4, 3, -1, 5, -6, 1]
Salida
7
Explicación
La secuencia [3, -1, 5] suma 7. Extenderla hacia la izquierda añade -4 y después 2, una pérdida neta de 2. Extenderla hacia la derecha añade -6 y después 1, una pérdida neta de 5. Ninguna otra secuencia obtiene un resultado mejor.
challenge icon

Para ir más allá

¿También puedes resolverlo mediante divide y vencerás en O(n log n), dividiendo la lista por la mitad y procesando las secuencias que atraviesan el centro?

Restablecer código
def maxSubArray(nums):
    # Escribe el código aquí

Prueba #1

Prueba #2

Argumento

nums = [2, -4, 3, -1, 5, -6, 1]

Salida Esperada

7