Menu
CoddyTech

Maximum Product Subarray

Multiplica entre sí los elementos de un subarreglo de nums y devuelve el mayor producto que puede dar cualquier subarreglo. Un subarreglo contiene elementos consecutivos, sin espacios, y nunca está vacío, así que incluso un arreglo de números negativos tiene una respuesta. Se permiten ceros y valores negativos.

Función

maxProduct(nums: integer-array) → integer
numsinteger-array
los enteros que se van a multiplicar, cada uno entre -10 y 10
Devuelveinteger
el mayor producto de un subarreglo no vacío

Restricciones

  • 1 ≤ nums.length ≤ 2 × 104
  • -10 ≤ nums[i] ≤ 10
  • El producto de cada subarreglo cabe en un entero con signo de 32 bits.

Ejemplos

Entrada
nums = [2, -5, 3, -2, 0, 4]
Salida
60
Explicación
Los dos negativos se cancelan: 2 × -5 × 3 × -2 = 60. El 0 divide el arreglo en dos, y el 4 del otro lado no puede superar 60.
challenge icon

Para ir más allá

¿Cómo podrías indicar también dónde empieza y termina el mejor subarreglo, manteniendo un tiempo de O(n) y un espacio de O(1)?

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

Prueba #1

Prueba #2

Prueba #3

Argumento

nums = [2, -5, 3, -2, 0, 4]

Salida Esperada

60