leetcode 62: Best Time to Buy and Sell Stock III
Best Time to Buy and Sell Stock IIINov
7 '12
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).
public class Solution { public int maxProfit(int[] prices) { // Start typing your Java solution below // DO NOT write main() function int sz = prices.length; if(sz<=1) return 0; int[] dp1 = new int[sz]; int[] dp2 = new int[sz]; int min = prices[0]; int max = prices[sz-1]; dp1[0] = 0; dp2[sz-1] = 0; for(int i=1; i<sz; i++) { dp1[i] = Math.max( dp1[i-1], prices[i]-min); min = Math.min( prices[i], min); } for( int i=sz-2; i>=0; i--) { dp2[i] = Math.max( dp2[i+1], max - prices[i] ); max = Math.max( prices[i], max); } int rel=0; for( int i=0; i<sz; i++) { rel = Math.max(rel, dp1[i]+dp2[i]); } return rel; } };