Best Time to Buy and Sell Stock
Problem Statement:
Given an array prices where prices[i] is the price of a given stock on day i, find the maximum profit you can achieve by making at most one transaction.
Pseudocode:
function maxProfit(prices): min_price = infinity max_profit = 0 for price in prices: if price < min_price: min_price = price elif price - min_price > max_profit: max_profit = price - min_price return max_profitKey Details Interviewers Look For:
- Single pass solution
- Tracking minimum price and maximum profit
- Edge case handling (e.g., empty array)
Key Identifiers:
- Array of stock prices
- Maximize profit
- Single transaction (buy and sell once)
Implementations
Kotlin
fun maxProfit(prices: IntArray): Int { var minPrice = Int.MAX_VALUE var maxProfit = 0 for (price in prices) { val currProfit = price - minPrice if (price < minPrice) { minPrice = price } else if (currProfit > maxProfit) { maxProfit = currProfit } } return maxProfit }Python
from typing import List
def maxProfit(prices: List[int]) -> int: min_price = float('inf') max_profit = 0 for price in prices: curr_price = price - min_price if price < min_price: min_price = price elif curr_price > max_profit: max_profit = curr_price return max_profit