1. 程式人生 > >leetcode 122. Best Time to Buy and Sell Stock II(買賣股票的最佳時機 II)

leetcode 122. Best Time to Buy and Sell Stock II(買賣股票的最佳時機 II)

題目描述

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

設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。

注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 

示例

輸入:[7, 1, 5, 3, 6, 4]

輸出: 7

解釋:在第2天買入,在第3天賣出,利潤為4,在第4天買入,第5天賣出,利潤為3,總利潤為4。

輸入:[1, 2, 3, 4, 5]

輸出:4

解釋:在第1天買入,在第5天賣出,利潤為4,總利潤為4。

輸入:[7, 6, 4, 3, 1]

輸出:0

解釋:沒有交易完成,總利潤為0。

解題思路

本題並沒有要求輸出具體哪一天買入、哪一天賣出,所以只需要將最後的總利潤輸出即可。

在遍歷的過程中,只要後一元素大於前一元素,就將利潤更新為之前的利潤加上現在的兩元素之差,最後輸出利潤即可。

程式碼

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

執行結果

歡迎各位大神指點