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.
Simple dynamic programming problem, but at first I didn't read the meaning of the topic. The buy here should of course be before the sale, so that is not the kind to take a max a min subtraction can be solved, the code is as follows:
1 classSolution {2 Public:3 intMaxprofit (vector<int>&prices) {4 intSZ =prices.size ();5 if(SZ = =0|| SZ = =1)return 0;6 intmin, Maxgain;7Min = prices[0];//the initial value of min should be noted8Maxgain =0;9 for(inti =0; I < sz; ++i) {Ten if(Min >Prices[i]) OneMin =Prices[i]; A Else if(Maxgain < Prices[i]-min) -Maxgain = Prices[i]-min; - } the returnMaxgain; - } -};
Leetcode oj:best time to Buy and Sell stock (best period for stock trading)