leetcode 122. Best Time to Buy and Sell Stock II(買賣股票的最佳時機 II)
阿新 • • 發佈:2018-12-11
題目描述
給定一個數組,它的第 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; }
執行結果
歡迎各位大神指點