Problem:
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.
Hide TagsArray Dynamic ProgrammingTest instructions: Given a stock price list, decide which day to buy which day to sell the most benefit, sell the time behind the buy
Thinking:
(1) In fact, it is to find the maximum difference between two elements of an array element, using the following number minus the previous number
(2) Typical DP idea, open an array of n size, record the difference of the position minus the smallest element in front,
Finally find the maximum value of the travel value array, time complexity O (N)
Code
Class Solution {public: int Maxprofit (vector<int>& prices) { int n=prices.size (); if (n==0) return 0; Vector<int> f (n,0); int minprice=prices[0]; for (int i=0;i<n;i++) { minprice=min (minprice,prices[i]); F[i]=prices[i]-minprice; } int profit=f[0]; for (int j=0;j<n;j++) Profit=max (Profit,f[j]); return profit;} ;
Leetcode | | 121. Best time to Buy and Sell Stock