动态规划:股票买卖I II III IV
题目
121. 买卖股票的最佳时机
122.买卖股票的最佳时机II
123.买卖股票的最佳时机III
188.买卖股票的最佳时机IV
对题目的想法
- 买卖股票I一开始是用类似贪心的解法做的,虽然实际实现过程和随想录的贪心解法好像不太一样。其实有点没明白随想录的贪心解法。
- 买卖股票II发现贪心的思路好像不能用了,这时去看了题解。
实现中/后的感想
- 买卖股票I II的最大区别是一个只能交易一次,而另外一个能交易无限次。具体在代码上的插别十分小:
无限次交易:dp[i][1] = Math.max(dp[i - 1][0] - prices[i], dp[i - 1][1]);
只有一次交易:dp[i][1] = Math.max(0 - prices[i], dp[i - 1][1]);
- 买卖股票III IV竟然都是一次过,非常满足。自己模仿买卖股票II写了类似的思路,定义了四种状态,其实并不太自信,没想到通过了。
- 自己第一次尝试其实有个笔误,然后看题解的时候发现这种“笔误”似乎也是正确的
大家会发现dp[2]利用的是当天的dp[1]。 但结果也是对的。
但实际上这种解法没有看懂,决定不尝试理解这种思路了。