【Day23 中高难度算法挑战】带有冷却时间的买卖股票最好时间
介绍
总而言之是时候利用暑假锻炼一下算法技术,一提算法面试就面露难色的情形总不能一直持续下去。本栏目面向有一定基础的编程爱好者,每天(如果up不鸽)分享并解析一道LeetCode中高难度题目(通常是hard)。有兴趣的小伙伴可以一起跟着做并且讨论解法。目前的教材是花花酱的Leetcode Problem List【1】.
适合人群:
有一定算法基础,但是还未能顺利通过笔试/面试,总觉得算法题目想不明白的你。
不适合人群:
算法入门级选手(一上来就做难题可能并不合适,建议首先专注简单/中等题目)
非常不适合人群:
算法竞赛选手(这种小儿科的问题完全是在浪费您的时间)
过往题目在这里!

带有冷却时间的买卖股票最好时间
题目看这里,leetcode第995题,middle难度:
https://www.lintcode.com/problem/995/description/
强烈建议读者自己先做(不过真的会有读者吗,笑),有任何问题欢迎在评论区讨论,up看到了会及时回复。做完了欢迎在评论区打卡~
解析
本来今天的题目是找到链表里环的起始位置,但是那个题目是纯纯的背诵题目,所以我们今天换成了这道买卖股票的动态规划题目。最重要的就是要理清逻辑之间的关系:
把冷冻期作为第三个状态,那么有:持有股票,未持有股票且在冷冻期,未持有股票且不在冷冻期。
持有股票可以是之前就持有,也可以是前一天不在冷冻期,今天刚买股票
未持有股票且在冷冻期,说明前一天刚卖完股票
未持有股票且不在冷冻期,说明前一天也没股票,前一天可能在冷冻期,也可能不在冷冻期

思考乐园
这道题怎样优化空间到O(1)?欢迎将答案写在评论区~
音乐推荐
没想到是因为想推荐好听的音乐才让我打开了lintcode......总而言之,这首来自树礼Suki的如愿推荐给改简历改麻了的你。
教材链接
【1】https://zxi.mytechroad.com/blog/leetcode-problem-categories/