Topic:
Say you has an array for which the i-th element is the price of a given-stock on day I.
If you were-permitted-to-complete at most one transaction (ie, buy one and sell one share of the stock), design an AL Gorithm to find the maximum profit.
Analysis: One-dimensional dynamic programming (hard counting is OK)
Dp[i] is the maximum profit for the [0,1,2...i] interval, the one-dimensional dynamic programming equation for the problem is as follows
DP[I+1] = Max{dp[i], prices[i+1]-minprices}, Minprices is the lowest price in the interval [0,1,2...,i]
The maximum profit we want to solve = Max{dp[0], dp[1], dp[2], ..., dp[n-1]}
In fact, the key is to maintain the maximum profit record, one is to maintain the maximum, minimum value of the record. and the maximum and minimum value of one of the need and maximum profit linkage
Code:
Public intMaxprofit (int[] prices) { if(Prices = =NULL|| Prices.length = = 0){ return0; } intProfit = 0; intMin = Prices[0]; intMax = Prices[0]; for(intI =1; i<prices.length;i++ ){ if(Prices[i]-Min >Profit) {Max=Prices[i]; Profit= Max-Min; }Else if(Prices[i]-Min < Profit && Prices[i] <Min) {Min=Prices[i]; } } returnProfit; }
[Leetcode]: 121:best time to Buy and Sell Stock