Skip to content

121. Best Time to Buy and Sell Stock

Problem Statement
  • You are given an array prices where prices[i] is the price of a given stock on the ith day.
  • You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.\
  • Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int profit = INT_MIN;
        int sellPrice = prices[prices.size()-1];
        for (int i = prices.size() -2 ; i >= 0 ; i--){
            int currentPrice = prices[i]; 
            if(sellPrice - currentPrice > profit){
                profit = sellPrice - currentPrice;
            }
            if(currentPrice > sellPrice)
                sellPrice = currentPrice;

        }

//      return profit < 0 ? 0 : profit; 
        if(profit < 0)
            return 0;
        return profit;
    }
};