Question:
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:
Problem Description: Gives an array where the I element represents the stock price for day I. If only one buy and sell is allowed, give the maximum profit scheme (i.e. buy on day I, and sell for J days to make the most benefit).
Idea: To ensure that the largest and smallest elements in the array are found on the premise of I < J, the difference between the two is the maximum profit. So with a pointer to the lowest element (if the value of the current element is lower than the lowest value in history, point to that Element), an integer holds the current profit (if the current element minus the lowest value is greater than the existing profit, update).
Answer:
Public classSolution { Public Static intMaxprofit (int[] prices) { if(Prices.length = = 0 | | prices.length = = 1) return0; intLow = Prices[0]; intProfile = 0; for(intI=1; i<prices.length; i++) { if(Prices[i] <Low ) Low=Prices[i]; if(Prices[i]-low >Profile )= Prices[i]-Low ; } returnProfile ; } }
Leetcode--best time to Buy and Sell Stock