【Day23 中高難度算法挑戰(zhàn)】帶有冷卻時間的買賣股票最好時間
介紹
總而言之是時候利用暑假鍛煉一下算法技術,一提算法面試就面露難色的情形總不能一直持續(xù)下去。本欄目面向有一定基礎的編程愛好者,每天(如果up不鴿)分享并解析一道LeetCode中高難度題目(通常是hard)。有興趣的小伙伴可以一起跟著做并且討論解法。目前的教材是花花醬的Leetcode Problem List【1】.
適合人群:
有一定算法基礎,但是還未能順利通過筆試/面試,總覺得算法題目想不明白的你。
不適合人群:
算法入門級選手(一上來就做難題可能并不合適,建議首先專注簡單/中等題目)
非常不適合人群:
算法競賽選手(這種小兒科的問題完全是在浪費您的時間)
過往題目在這里!

帶有冷卻時間的買賣股票最好時間
題目看這里,leetcode第995題,middle難度:
https://www.lintcode.com/problem/995/description/
強烈建議讀者自己先做(不過真的會有讀者嗎,笑),有任何問題歡迎在評論區(qū)討論,up看到了會及時回復。做完了歡迎在評論區(qū)打卡~
解析
本來今天的題目是找到鏈表里環(huán)的起始位置,但是那個題目是純純的背誦題目,所以我們今天換成了這道買賣股票的動態(tài)規(guī)劃題目。最重要的就是要理清邏輯之間的關系:
把冷凍期作為第三個狀態(tài),那么有:持有股票,未持有股票且在冷凍期,未持有股票且不在冷凍期。
持有股票可以是之前就持有,也可以是前一天不在冷凍期,今天剛買股票
未持有股票且在冷凍期,說明前一天剛賣完股票
未持有股票且不在冷凍期,說明前一天也沒股票,前一天可能在冷凍期,也可能不在冷凍期

思考樂園
這道題怎樣優(yōu)化空間到O(1)?歡迎將答案寫在評論區(qū)~
音樂推薦
沒想到是因為想推薦好聽的音樂才讓我打開了lintcode......總而言之,這首來自樹禮Suki的如愿推薦給改簡歷改麻了的你。
教材鏈接
【1】https://zxi.mytechroad.com/blog/leetcode-problem-categories/