LeetCode.123 - 买卖股票的最佳时机 III
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
思路
- 任意一天可能处于五种状态中:空仓 0、持仓 1、空仓 1、持仓 2、空仓 2
- 某一天的操作可能有三种:买入、卖出、不操作
- 「持仓 1」状态来源
- 前一日「持仓 1」不操作
- 前一日「空仓 0」买入股票
- 「空仓 1」状态来源
- 前一日「空仓 1」不操作
- 前一日「持仓 1」卖出股票
- 「持仓 2」状态来源
- 前一日「持仓 2」不操作
- 前一日「空仓 1」买入股票
- 「空仓 2」状态来源
- 前一日「空仓 2」不操作
- 前一日「持仓 2」卖出股票
- 分别使用 holdV1, holdV2, emptyV1, emptyV2 记录「持仓 1、空仓 1、持仓 2、空仓 2」几个状态下交易员持有的最大现金
1 | var maxProfit = function (prices) { |