Best Time to Buy and Sell Stock III

来源:互联网 发布:h5 js 打开支付宝app 编辑:程序博客网 时间:2024/05/23 14:56

Best Time to Buy and Sell Stock III


Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete at most two transactions.

Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

java代码:

public class Solution {    public int maxProfit(int[] prices) {        int n = prices.length;    if(n<2) return 0;    //first transaction's max profit    int[] fmp = new int[n];    fmp[0] = 0;    int minPrice = prices[0];    for(int i=1; i<n; i++){        minPrice = Math.min(minPrice, prices[i]);        fmp[i] = Math.max(fmp[i-1], prices[i]-minPrice);    }    //second transaction's max profit    int[] smp = new int[n];    smp[n-1] = 0;    int maxPrice = prices[n-1];    for(int i=n-2; i>=0; i--){        maxPrice = Math.max(maxPrice, prices[i]);        smp[i] = Math.max(smp[i+1], maxPrice-prices[i]);    }    int profix = 0;    for(int i=0; i<n; i++){        profix = Math.max(profix, fmp[i]+smp[i]);    }    return profix;    }}


0 0