leetcode 122 Best Time to Buy and Sell Stock II 详细解答
解答1
假设有一个图像代表数组:
> https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/solution/
最后需要求得的答案就是,每一段的递增区间的差值。所以得到代码如下:
解法2
上面解法比较hack, 不推荐。
就股票买卖来说,买入股票自身的价格就会 -Price,卖出股票自身的价格就是 +Price.
利用动态规划的思想,在这里
初始化 buy = - prices[0], 即在最开始买入股票,自身的价格就是 -prices[0].
sell = 0, 即在最开始没有股票卖出,自身价格还是 0
.
.
.
在第 i 处,buy = max(buy, sell - prices[i]), sell = max(sell, buy + prices[i])
这里的 sell - prices[i] 意思就是在 i 处买入股票,自己就亏损了prices[i]. buy + prices[i] 就是在 i 处卖出股票,自己就收益了prices[i] 这么多钱
最终代码如下:
这里的返回值可以直接是 sell, 因为不可能在最后还要买入股票