當前位置:
首頁 >
股票交易日
發布時間:2025/3/15
47
豆豆
題目描述:
在股市的交易日中,假設最多可進行兩次買賣(即買和賣的次數均小于等于2),規則是必須一筆成交后進行另一筆(即買-賣-買-賣的順序進行)。給出一天中的股票變化序列,請寫一個程序計算一天可以獲得的最大收益。請采用實踐復雜度低的方法實現。
給定價格序列prices及它的長度n,請返回最大收益。保證長度小于等于500。
?
測試用例:
[10,22,5,75,65,80],6
?
返回結果:
87
?分析:首先要明確的是第 i 天賣出,是可以在第 i 天買入的。
?思路:
用兩個數組,一個數組preProfit[i],指的是第i+1天(數組下標從0開始)之前,當然也包括第i+1天的最大收益,需要保存的一個數據是第i+1天之前的最小價格,如果第i+1天的價格減去最小價格后的利潤是要比不在這天賣出的利潤大,那么就果斷賣出,否則,這一天就不賣出,那么這天之前的最大利潤和昨天的最大利潤是一樣的。這樣就使用了昨天的數據,這才是正統的動態規劃的思想。
另外一個數組postProfit[i]指定是第i天買入的話,之后所能獲得的最大利潤,需要保持一個變量記錄第i+1天之后的最大價格,如果最大價格減去這一天的利潤比明天之后賣出的最大利潤要大的話,就賣出,否則,就等于明天之后賣出的最大利潤。最后將兩個數組求和,計算出總的最大利潤
?
轉載于:https://www.cnblogs.com/GumpYan/p/5862373.html
總結
- 上一篇: jQuery全屏滚动插件fullPage
- 下一篇: LeetCode 171 Excel S