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.
Solution: Assuming that the maximum gain after the first day of trading is MAXV, then to make MAXV the largest, then either MAXV for the previous i-1 days after the maximum gain, or the first day of the stock price (sell price) minus the first i-1 days of the lowest price (buy price) gains. Use dynamic solver. Time complexity O (n), Spatial complexity O (1).
classSolution { Public: intMaxprofit (vector<int>&prices) { intn =prices.size (); if(N <2) return 0; intCurmin = prices[0], Maxval =0; for(inti =1; I < n; i++) {curmin=min (curmin, prices[i]); Maxval= Max (Maxval, Prices[i]-curmin); } returnMaxval; }};
[Leetcode]31. best time to buy and Sell stock stock trading