Best Time to Buy and Sell Stock
Given prices where prices[i] is the price on day i, return the maximum profit from buying on one day and selling on a later day. If no profit is possible, return 0.
One pass: track the minimum price seen so far, and the best profit achievable selling at each day.
maxProfit([7, 1, 5, 3, 6, 4]); // 5 (buy at 1, sell at 6)
maxProfit([7, 6, 4, 3, 1]); // 0 (prices only fall)