Lintcode393 Best Time to Buy and Sell Stock IV solution 題解

【題目描述】

Say you have an array for which the?i?th element is the price of a given stock on day?i.

Design an algorithm to find the maximum profit. You may complete at most?k transactions.

?Notice:You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again).

假設(shè)你有一個(gè)數(shù)組,它的第i個(gè)元素是一支給定的股票在第i天的價(jià)格。

設(shè)計(jì)一個(gè)算法來找到最大的利潤或粮。你最多可以完成?k?筆交易。

【注】你不可以同時(shí)參與多筆交易(你必須在再次購買前出售掉之前的股票)

【題目鏈接】

www.lintcode.com/en/problem/best-time-to-buy-and-sell-stock-iv/

【題目解析】

下面的解法主要是能把兩次的限制推廣到k次交易:

這道題是Best Time to Buy and Sell Stock的擴(kuò)展讯嫂,現(xiàn)在最多可以進(jìn)行兩次交易。所以仍然使用動態(tài)規(guī)劃來完成兆沙,事實(shí)上可以解決非常通用的情況欧芽,也就是最多進(jìn)行k次交易的情況。 這里我們先解釋最多可以進(jìn)行k次交易的算法挤悉,然后最多進(jìn)行兩次我們只需要把k取成2即可渐裸。我們還是使用“局部最優(yōu)和全局最優(yōu)解法”巫湘。我們維護(hù)兩種量装悲,一個(gè)是當(dāng)前到達(dá)第i天可以最多進(jìn)行j次交易,最好的利潤是多少(global[i][j])尚氛,另一個(gè)是當(dāng)前到達(dá)第i天诀诊,最多可進(jìn)行j次交易,并且最后一次交易在當(dāng)天賣出的最好的利潤是多少(local[i][j])阅嘶。下面我們來看遞推式属瓣,全局的比較簡單,

global[i][j]=max(local[i][j],global[i-1][j])讯柔,

也就是去當(dāng)前局部最好的抡蛙,和過往全局最好的中大的那個(gè)(因?yàn)樽詈笠淮谓灰兹绻?dāng)前天一定在局部最好的里面,否則一定在過往全局最優(yōu)的里面)魂迄。

全局(到達(dá)第i天進(jìn)行j次交易的最大收益) = max{局部(在第i天交易后粗截,恰好滿足j次交易),全局(到達(dá)第i-1天時(shí)已經(jīng)滿足j次交易)}

對于局部變量的維護(hù)捣炬,遞推式是

local[i][j]=max(global[i-1][j-1]+max(diff,0),local[i-1][j]+diff)熊昌,

也就是看兩個(gè)量,第一個(gè)是全局到i-1天進(jìn)行j-1次交易湿酸,然后加上今天的交易婿屹,如果今天是賺錢的話(也就是前面只要j-1次交易,最后一次交易取當(dāng)前天)推溃,第二個(gè)量則是取local第i-1天j次交易昂利,然后加上今天的差值(這里因?yàn)閘ocal[i-1][j]比如包含第i-1天賣出的交易,所以現(xiàn)在變成第i天賣出,并不會增加交易次數(shù)蜂奸,而且這里無論diff是不是大于0都一定要加上梯捕,因?yàn)榉駝t就不滿足local[i][j]必須在最后一天賣出的條件了)。

局部(在第i天交易后窝撵,總共交易了j次) = max{情況2傀顾,情況1}

情況1:在第i-1天時(shí),恰好已經(jīng)交易了j次(local[i-1][j])碌奉,那么如果i-1天到i天再交易一次:即在第i-1天買入短曾,第i天賣出(diff),則這不并不會增加交易次數(shù)赐劣!【例如我在第一天買入嫉拐,第二天賣出;然后第二天又買入魁兼,第三天再賣出的行為 和 第一天買入婉徘,第三天賣出 的效果是一樣的,其實(shí)只進(jìn)行了一次交易咐汞!因?yàn)橛羞B續(xù)性】 情況2:第i-1天后盖呼,共交易了j-1次(global[i-1][j-1]),因此為了滿足“第i天過后共進(jìn)行了j次交易化撕,且第i天必須進(jìn)行交易”的條件:我們可以選擇1:在第i-1天買入几晤,然后再第i天賣出(diff),或者選擇在第i天買入植阴,然后同樣在第i天賣出(收益為0)蟹瘾。

上面的算法中對于天數(shù)需要一次掃描,而每次要對交易次數(shù)進(jìn)行遞推式求解掠手,所以時(shí)間復(fù)雜度是O(n*k)憾朴,如果是最多進(jìn)行兩次交易,那么復(fù)雜度還是O(n)喷鸽≈诶祝空間上只需要維護(hù)當(dāng)天數(shù)據(jù)皆可以,所以是O(k)魁衙,當(dāng)k=2报腔,則是O(1)。

【參考答案】

www.jiuzhang.com/solutions/best-time-to-buy-and-sell-stock-iv/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剖淀,一起剝皮案震驚了整個(gè)濱河市纯蛾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纵隔,老刑警劉巖翻诉,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炮姨,死亡現(xiàn)場離奇詭異,居然都是意外死亡碰煌,警方通過查閱死者的電腦和手機(jī)舒岸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芦圾,“玉大人蛾派,你說我怎么就攤上這事「錾伲” “怎么了洪乍?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長夜焦。 經(jīng)常有香客問我壳澳,道長,這世上最難降的妖魔是什么茫经? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任巷波,我火速辦了婚禮,結(jié)果婚禮上卸伞,老公的妹妹穿的比我還像新娘抹镊。我一直安慰自己,他們只是感情好瞪慧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布髓考。 她就那樣靜靜地躺著,像睡著了一般弃酌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上儡炼,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天妓湘,我揣著相機(jī)與錄音,去河邊找鬼乌询。 笑死榜贴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妹田。 我是一名探鬼主播唬党,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鬼佣!你這毒婦竟也來了驶拱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晶衷,失蹤者是張志新(化名)和其女友劉穎蓝纲,沒想到半個(gè)月后阴孟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡税迷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年永丝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箭养。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慕嚷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毕泌,到底是詐尸還是另有隱情闯冷,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布懈词,位于F島的核電站蛇耀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坎弯。R本人自食惡果不足惜纺涤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抠忘。 院中可真熱鬧撩炊,春花似錦、人聲如沸崎脉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囚灼。三九已至骆膝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灶体,已是汗流浹背阅签。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝎抽,地道東北人政钟。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像樟结,于是被迫代替她去往敵國和親养交。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容