Best Time to Buy and Sell Stock – Leetcode Solution

In this post, we are going to solve the 121. Best Time to Buy and Sell Stock problem of Leetcode. This problem 121. Best Time to Buy and Sell Stock is a Leetcode easy level problem. Let’s see code, 121. Best Time to Buy and Sell Stock – Leetcode Solution.

Problem

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.

Example 1 :


Input: prices = [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.

Example 2 :


Input: prices = [7,6,4,3,1]
Output: 0
Explanation: In this case, no transactions are done and the max profit = 0.

Constraints

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104

Now, let’s see the code of 121. Best Time to Buy and Sell Stock – Leetcode Solution.

Best Time to Buy and Sell Stock – Leetcode Solution

121. Best Time to Buy and Sell Stock – Solution in Java

class Solution {
    public int maxProfit(int[] prices) {
        int minCostToBuyAt = prices[0];
        int profit = 0;
        for(int i=1; i< prices.length; i++){
            minCostToBuyAt = Math.min(minCostToBuyAt,prices[i]);
            profit = Math.max(profit,prices[i] - minCostToBuyAt);
        }
        return profit;
    }
}

121. Best Time to Buy and Sell Stock – Solution in C++

class Solution {
public:
    int maxProfit(vector<int>& prices) {
         int minCostToBuyAt = prices[0];
        int profit = 0;
        for(int i=1; i< prices.size(); i++){
            minCostToBuyAt = min(minCostToBuyAt,prices[i]);
            profit = max(profit,prices[i] - minCostToBuyAt);
        }
        return profit;
    }
};

121. Best Time to Buy and Sell Stock – Solution in Python

class Solution:
    def maxProfit(self,prices):
        left = 0 #Buy
        right = 1 #Sell
        max_profit = 0
        while right < len(prices):
            currentProfit = prices[right] - prices[left]
            if prices[left] < prices[right]:
                max_profit =max(currentProfit,max_profit)
            else:
                left = right
            right += 1
        return max_profit

Note: This problem 121. Best Time to Buy and Sell Stock is generated by Leetcode but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.

Leave a Comment

Your email address will not be published. Required fields are marked *