You are given an array prices where prices[i] is the price of a given stock on day i. You want to maximize your profit by choosing a single day to buy and a different day in the future to sell. Return the maximum profit. If no profit is possible, return 0.
Input: prices = [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1), sell on day 5 (price = 6), profit = 5.
Topics: arrays, sliding-window, dp
Asked by: Amazon, Meta, Apple
Time complexity: O(n). Space complexity: O(1).