Given an array of price fluctuations throughout the day for a stock in the stock market, find the buy and sell price that would have yielded the maximum gain for the day.
Hint: the maximum gain is not necessarily related to the high price or low price of the day. To make a gain, a buy needs to occur before a sell, and the buy price must be lower than the sell price.
This can be solved in one pass through the prices, or O(n).
var buy = 0 var sell = 0 var max = 0 var low = prices[0] var high = prices[0] for i in 1 ..< prices.count { let price = prices[i] if price - low > max { max = price - low sell = price buy = low } if price < low { low = price } if price > high { high = price } } print("buy \(buy) sell \(sell)") print("low \(low) high \(high)") print("max \(max)")