Problem8945--DP32 买卖股票的最好时机 III

8945: DP32 买卖股票的最好时机 III

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 512 MiB

Description

假设你有一个数组 prices,长度为n,其中 prices[i] 是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益
1. 你最多可以对该股票有两笔交易操作,一笔交易代表着一次买入与一次卖出,但是再次购买前必须卖出之前的股票
2. 如果不能获取收益,请返回 0
3. 假设买入卖出均无手续费

Input

第一行输入一个正整数 n ,表示数组 prices 的长度
第一行输入 n 个正整数,表示数组 prices 的所有元素的值 

Output

输出最大收益

Constraints

$1≤n≤10^5$
$$1≤price_i≤10^4$

Sample 1 Input

6
8 9 3 5 1 3

Sample 1 Output

4

第三天(股票价格=3)买进,第四天(股票价格=5)卖出,收益为2 

第五天(股票价格=1)买进,第六天(股票价格=3)卖出,收益为2 

总收益为4。

Sample 2 Input

4
9 8 4 1

Sample 2 Output

0

Sample 3 Input

5
1 2 8 3 8

Sample 3 Output

12

第一笔股票交易在第一天买进,第三天卖出;第二笔股票交易在第四天买进,第五天卖出;总收益为12。 

因最多只可以同时持有一只股票,所以不能在第一天进行第一笔股票交易的买进操作,又在第二天进行第二笔股票交易的买进操作(此时第一笔股票交易还没卖出),最后两笔股票交易同时在第三天卖出,也即以上操作不满足题目要求。

HINT

相同题目:牛客网

Source/Category