Skip to main content

5. Best Time to Buy and Sell Stock

easyAsked at Adyen

Given an array of daily prices, return the maximum profit from one buy and one sell.

By Alex Chen, Founder, InterviewChamp.AI · Last verified

Problem

You are given an array prices where prices[i] is the price of a stock on day i. Choose a day to buy and a later day to sell to maximize profit. Return 0 if no profit is possible.

Constraints

  • 1 <= prices.length <= 10^5
  • 0 <= prices[i] <= 10^4

Examples

Example 1

Input
prices = [7,1,5,3,6,4]
Output
5

Example 2

Input
prices = [7,6,4,3,1]
Output
0

Approaches

1. Brute force

Check every (buy, sell) pair.

Time
O(n^2)
Space
O(1)
let best = 0;
for (let i = 0; i < prices.length; i++) {
  for (let j = i+1; j < prices.length; j++) {
    best = Math.max(best, prices[j] - prices[i]);
  }
}
return best;

Tradeoff:

2. Single pass min tracking

Track running minimum and best profit so far.

Time
O(n)
Space
O(1)
function maxProfit(prices) {
  let lo = Infinity, best = 0;
  for (const p of prices) {
    lo = Math.min(lo, p);
    best = Math.max(best, p - lo);
  }
  return best;
}

Tradeoff:

Adyen-specific tips

Adyen frames this as a payment-routing cost-optimization warm-up — they want you to recognize the running-minimum invariant on the first pass without backtracking.

Solve it now

Free. No sign-up. Python and JavaScript run instantly in your browser.

Output

Press Run or Cmd+Enter to execute

Practice these live with InterviewChamp.AI

Drill Best Time to Buy and Sell Stock and other Adyen interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.

Practice these live with InterviewChamp.AI →