Saltar al contenido

Especias entre puertos

Enunciado

"Barato primero, caro después, y nunca al revés", repite la capitana Brea. Su barco visita los puertos uno tras otro y en cada uno sabe cuánto cuesta el saco de canela. En todo el viaje compra un solo saco, en algún puerto, y lo vende en uno de los que vienen después.

Escribe una función que reciba la lista de precios, en el orden en que el barco visita los puertos, y regrese un número entero: la mayor ganancia posible, que es el precio de venta menos el de compra.

Con 9, 4, 7, 2 y 5, lo mejor es comprar en 4 y vender en 7, o comprar en 2 y vender en 5: ganas 3. No puedes comprar en 2 y vender en 9, porque cuando llegas al 2 el puerto del 9 ya quedó atrás.

Los precios son enteros positivos. Si ninguna compra deja ganancia, porque los precios solo bajan o se quedan igual, o porque hay menos de dos puertos, no compras nada y regresas 0.

Ejemplos

  • El del ejemplo

    [9, 4, 7, 2, 5] → 3

  • El mejor trato cruza todo el viaje

    [3, 8, 2, 6, 10, 1] → 8

  • El más barato llega después del más caro

    [12, 5, 8, 1] → 3

  • Los precios solo bajan

    [10, 8, 5, 3] → 0

  • Los precios solo suben

    [2, 4, 9] → 7

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def mejor_ganancia(precios):
    pass

JavaScript

function mejorGanancia(precios) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n)

Ver todos los retos →