3.9 el mejor momento para comprar y vender las acciones

título

Dado un vector, que i-ésimo elemento es una población determinada precios i-día.

Si sólo se le permite hasta completar una transacción (es decir, la compra y venta de una acción), para diseñar un algoritmo para calcular el beneficio máximo que se puede conseguir.

Tenga en cuenta que no se puede vender la acción antes de las poblaciones de compra.

Ejemplo 1

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

Ejemplo 2

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

pensamiento

  • Registre el valor mínimo a la izquierda, en el curso atravesado por cálculo de las ganancias actualizan el máximo beneficio, experimentando menor que el valor mínimo del número de cambios del valor mínimo hasta el final.

código

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if ( prices.size() < 2 ) return 0;

        int profit = ( prices[1] > prices[0] ? prices[1] - prices[0] : 0 );
        int minVal = min( prices[0], prices[1] );

        for ( int i = 2; i < prices.size(); ++i ) {
            if ( prices[i] > minVal )
                profit = max( profit, prices[i] - minVal );
            else 
                minVal = prices[i];
        }

        return profit;
    }
};
Ha publicado 183 artículos originales · ganado elogios 43 · vistas 60000 +

Supongo que te gusta

Origin blog.csdn.net/m0_37822685/article/details/104769569
Recomendado
Clasificación