给定一个整数数组 prices,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。
在每一天,你可能会决定购买或出售股票。你在任何时候 最多 只能持有 一手 股票。你也可以购买它,然后在同一天出售。
设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
思考题:如果问题拓展成最多可以完成 k笔 交易,那算法应该怎么设计呢?
样例1
输入:4 4 6 1 1 4 2 5
输出:6
解释:在第 4 天(股票价格 = 1)的时候买入,在第 6 天(股票价格 = 4)的时候卖出,这笔交易所能获得利润为 4-1 = 3 。随后,在第 7 天(股票价格 = 2)的时候买入,在第 8 天 (股票价格 = 5)的时候卖出,这笔交易所能获得利润为 5-2 = 3 。
样例2
输入:2 3 4 5 6
输出:4
解释:在第 1 天(股票价格 = 2)的时候买入,在第 5 天 (股票价格 = 6)的时候卖出, 这笔交易所能获得利润为 6-2 = 4 。注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
样例3
输入:8 6 5 2 1
输出:0
解释:在这个情况下, 没有交易完成, 所以最大利润为0。