题目链接:
https://www.lintcode.com/problem/best-time-to-buy-and-sell-stock-iv/description
给定数组 prices
, 其中第 i
个元素代表某只股票在第 i
天第价格.
你最多可以完成 k
笔交易. 问最大的利润是多少?
Example
样例 1:
输入: k = 2, prices = [4, 4, 6, 1, 1, 4, 2 ,5]
输出: 6
解释: 以 4 买入, 以 6 卖出. 然后再以 1 买入, 以 5 卖出. 利润为 2 + 4 = 6.
样例 2:
输入: k = 1, prices = [3, 2, 1]
输出: 0
解释: 不进行交易
Challenge
O(nk) 时间复杂度. n
是 prices
数组的大小.
Notice
你不可以同时参与多笔交易(你必须在再次购买前出售掉之前的股票)
思路:
思路:无非四种状态 当天买入不买或者卖出不卖 ,我们得到状态转移方程
buy[i]=max(buy[i],sell[i-1]-prices) //buy[i]代表第i笔买入自己还剩的钱 买入则减去当天的价格
sell[i]=max(sell[i],buy[i]+prices[i]) //sell[i]代表第i笔卖出后自己还剩的钱 卖出即加入当天的价格
参考: https://blog.youkuaiyun.com/smile__dream/article/details/81703023