Say you has an array for which the i-th element is the price of a given-stock on day I.
Design an algorithm to find the maximum profit. Transactions at the most K .
Problem Solving Ideas:
This is the most difficult part of the best time to Buy and Sell stock Series, which needs to be Dp,java implemented as follows:
public int Maxprofit (int k, int[] prices) { if (k = = 0 | | Prices.length < 2) return 0; if (k > Prices.length/2) { int maxprofitii = 0; for (int i = 1; i < prices.length; ++i) if (Prices[i] > prices[i-1]) maxprofitii + = prices[i]-prices[i- 1]; return maxprofitii; } Int[] Buy=new int[k]; Int[] Sell=new int[k]; for (int i=0;i<buy.length;i++) buy[i]=integer.min_value; for (int i = 0; i < prices.length; i++) for (int j = k-1; J >= 0; j--) { Sell[j] = Math.max (sell[j], buy [j] + prices[i]); if (j = = 0) Buy[j] = Math.max (Buy[j],-prices[i]); else buy[j] = Math.max (Buy[j], sell[j-1]-prices[i]); } return sell[k-1]; }
Java for Leetcode 188-Buy and Sell Stock IV "hard"