Categorías
Algorithms

LeetCode – Mejor momento para comprar y vender acciones II (Java)

Supongamos que tiene una matriz para la que el i-ésimo elemento es el precio de una acción determinada el día i.

Diseñe un algoritmo para encontrar el máximo beneficio. Puede completar tantas transacciones como desee (es decir, comprar una y vender una acción varias veces). Sin embargo, no puede realizar varias transacciones al mismo tiempo (es decir, debe vender las acciones antes de volver a comprar).

Análisis

Este problema puede verse como encontrar todas las secuencias ascendentes. Por ejemplo, dado {5, 1, 2, 3, 4}, comprar a 1 y vender a 4 es lo mismo que comprar a 1 y vender a 2 y comprar a 2 y vender a 3 y comprar a 3 y vender a 4.

Podemos escanear la matriz una vez y encontrar todos los pares de elementos que están en orden ascendente.

Solución Java

public int maxProfit(int[] prices) {
    int profit = 0;
    for(int i=1; i<prices.length; i++){
        int diff = prices[i]-prices[i-1];
        if(diff > 0){
            profit += diff;
        }
    }
    return profit;
}

  LeetCode: subcadena más larga sin caracteres repetidos (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *