393. 买卖股票的最佳时机 IV

博客围绕股票交易最大利润问题展开,给定数组代表股票每天价格,最多可完成k笔交易,要求计算最大利润。提出需O(nk)时间复杂度,且不能同时参与多笔交易。给出思路,通过四种状态得到状态转移方程来求解。

题目链接:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值