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