Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Best Time to Buy and Sell Stock II

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "122" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

You are given an integer array prices where prices[i] is the price of a given stock on the ith day. On each day, you may decide to buy and/or sell the stock. You can only hold at most one share of the stock at any time. However, you can buy it then immediately sell it on the same day. Find and return the maximum profit you can achieve. Example 1: Input: prices = [7,1,5,3,6,4] Output: 7 Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4. Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3. Total profit is 4 + 3 = 7. Example 2: Input: prices = [1,2,3,4,5] Output: 4 Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4. Total profit is 4. Example 3: Input: prices = [7,6,4,3,1] Output: 0 Explanation: There is no way to make a positive profit, so we never buy the stock to achieve the maximum profit of 0. Constraints: 1 <= prices.length <= 3 * 104 0 <= prices[i] <= 104

Explanation

Here's the solution to the stock trading problem:

  • Key Idea: Iterate through the prices array and accumulate profit whenever the current day's price is higher than the previous day's price. This is equivalent to buying at the previous day's price and selling on the current day.
  • Greedy Approach: The algorithm makes the locally optimal choice at each step (buy if the price is going up, skip if it's going down) to achieve the global maximum profit.
  • No Need to Track Buy/Sell Days: Since we can buy and sell on the same day, we can simply sum up the positive price differences to get the total profit.

  • Complexity: O(n) runtime, O(1) storage.

Code

    def maxProfit(prices: list[int]) -> int:
    """
    Calculates the maximum profit achievable by buying and selling a stock
    multiple times, with the constraint of holding at most one share at a time.

    Args:
        prices (list[int]): A list of integers representing the stock prices
                             on each day.

    Returns:
        int: The maximum profit that can be achieved.
    """
    profit = 0
    for i in range(1, len(prices)):
        if prices[i] > prices[i - 1]:
            profit += prices[i] - prices[i - 1]
    return profit

More from this blog

C

Chatmagic blog

2894 posts