1. 程式人生 > >[LeetCode][初級演算法][動態規劃]買賣股票的最佳時機

[LeetCode][初級演算法][動態規劃]買賣股票的最佳時機

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。

如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。

注意你不能在買入股票前賣出股票。

這道題參考了網上的解答,採用貪心法,遍歷陣列時一邊計算最大利潤,一邊儲存最低價格以期之後能得到更高的利潤。

所以只需要O(n)即可。

int maxProfit(int* prices, int pricesSize) {
    int lowest, max_profit;
    lowest = 99999;
    max_profit = 0;
    int i=0;
    for(i=0;i<pricesSize;i++){
        if(prices[i]<lowest)
            lowest = prices[i];
        if(prices[i]-lowest > max_profit)
            max_profit = prices[i]-lowest;
    }
    return max_profit;
}