public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 两次交易所能获得的最大收益
* @param prices int整型一维数组 股票每一天的价格
* @return int整型
*/
public int maxProfit (int[] prices) {
// write code here
if(prices == null || prices.length <=1 ){
return 0;
}
int n = prices.length;
//f[i] 代表第i天 到第n天卖出的最高价
//记录了从i点到之后的一次交易的最大收益
//也就是卖出的最大收益
int[] f= new int[n];
int max = prices[n-1];
f[n-1] = 0;
for(int i = n-2;i >=0;i--){
max = Math.max(max,prices[i]);
f[i] = Math.max(f[i+1],max - prices[i]);
}
int result = 0 ;
int min = Integer.MAX_VALUE;
for(int i = 0;i< n-1;i++){
//这里记录买入的最低价格
min = Math.min(min, prices[i]);
result = Math.max(result, prices[i] - min + f[i]);
}
return result;
}
}