Bird
Raised Fist0
DSA Goprogramming~3 mins

Why Buy and Sell Stocks All Variants in DSA Go?

Choose your learning style10 modes available
The Big Idea

What if a simple method could tell you the best day to buy and sell stocks for maximum profit?

The Scenario

Imagine you want to buy and sell stocks to make money. You try to track prices every day on paper and decide when to buy or sell manually.

You write down prices for each day and try to find the best days to buy low and sell high to earn profit.

The Problem

Doing this by hand is slow and confusing. You might miss the best days or make mistakes in calculations.

It is hard to remember all prices and compare them quickly to find the best profit.

The Solution

Using algorithms to buy and sell stocks helps you find the best days to buy and sell automatically.

The algorithm checks prices quickly and finds the maximum profit without errors.

Before vs After
✗ Before
prices := []int{7,1,5,3,6,4}
maxProfit := 0
for i := 0; i < len(prices); i++ {
  for j := i+1; j < len(prices); j++ {
    if prices[j] - prices[i] > maxProfit {
      maxProfit = prices[j] - prices[i]
    }
  }
}
✓ After
prices := []int{7,1,5,3,6,4}
minPrice := prices[0]
maxProfit := 0
for i := 1; i < len(prices); i++ {
  if prices[i] < minPrice {
    minPrice = prices[i]
  } else if prices[i]-minPrice > maxProfit {
    maxProfit = prices[i] - minPrice
  }
}
What It Enables

This concept lets you quickly find the best buy and sell days to maximize profit from stock prices.

Real Life Example

Investors use these algorithms to decide when to buy or sell stocks to earn the most money without guessing.

Key Takeaways

Manual tracking of stock prices is slow and error-prone.

Algorithms find the best buy and sell days automatically.

This helps maximize profit with less effort and mistakes.

Practice

(1/5)
1. What is the main goal when solving the Buy and Sell Stocks problem variants?
easy
A. Find the day with the highest stock price only
B. Minimize the number of transactions regardless of profit
C. Maximize the profit by choosing the best days to buy and sell stocks
D. Calculate the average stock price over all days

Solution

  1. Step 1: Understand the problem goal

    The problem asks to maximize profit by buying and selling stocks on certain days.
  2. Step 2: Identify the correct objective

    Maximizing profit means choosing days to buy low and sell high, not just counting transactions or prices.
  3. Final Answer:

    Maximize the profit by choosing the best days to buy and sell stocks -> Option C
  4. Quick Check:

    Goal = Maximize profit [OK]
Hint: Focus on profit maximization, not just prices or counts [OK]
Common Mistakes:
  • Confusing profit with number of transactions
  • Thinking only about highest price day
  • Ignoring the buy day in calculations
2. Which of the following Go code snippets correctly initializes a slice to store stock prices for 5 days?
easy
A. prices := []int{7, 1, 5, 3, 6}
B. prices := [5]int{7, 1, 5, 3, 6}
C. prices := make([]int, 5, 5)
D. prices := new([]int{7, 1, 5, 3, 6})

Solution

  1. Step 1: Understand slice initialization in Go

    To create a slice with values, use the literal syntax: []int{values}.
  2. Step 2: Check each option

    prices := []int{7, 1, 5, 3, 6} correctly creates a slice with given values. prices := [5]int{7, 1, 5, 3, 6} creates an array, not a slice. prices := make([]int, 5, 5) creates an empty slice of length 5 but no values. prices := new([]int{7, 1, 5, 3, 6}) is invalid syntax.
  3. Final Answer:

    prices := []int{7, 1, 5, 3, 6} -> Option A
  4. Quick Check:

    Slice literal = []int{values} [OK]
Hint: Use []int{...} to create slices with values directly [OK]
Common Mistakes:
  • Using array syntax instead of slice
  • Using new() incorrectly for slices
  • Creating empty slices without values
3. What is the output of the following Go code that finds the max profit with only one transaction?
func maxProfit(prices []int) int {
    minPrice := prices[0]
    maxProfit := 0
    for _, price := range prices {
        if price < minPrice {
            minPrice = price
        } else if price - minPrice > maxProfit {
            maxProfit = price - minPrice
        }
    }
    return maxProfit
}

fmt.Println(maxProfit([]int{7,1,5,3,6,4}))
medium
A. 5
B. 6
C. 4
D. 7

Solution

  1. Step 1: Trace the loop to find minPrice and maxProfit

    Start minPrice=7, maxProfit=0. Iterate prices: - price=7: minPrice=7, maxProfit=0 - price=1: minPrice=1 (lower) - price=5: profit=5-1=4 >0, maxProfit=4 - price=3: profit=3-1=2 <4, maxProfit=4 - price=6: profit=6-1=5 >4, maxProfit=5 - price=4: profit=4-1=3 <5, maxProfit=5
  2. Step 2: Return maxProfit

    maxProfit is 5 after loop ends.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    Max profit = 5 [OK]
Hint: Track min price and update max profit during iteration [OK]
Common Mistakes:
  • Not updating minPrice correctly
  • Calculating profit before updating minPrice
  • Returning wrong variable
4. Identify the bug in this Go function that tries to calculate max profit with unlimited transactions:
func maxProfit(prices []int) int {
    profit := 0
    for i := 0; i < len(prices); i++ {
        if prices[i] > prices[i-1] {
            profit += prices[i] - prices[i-1]
        }
    }
    return profit
}
medium
A. prices slice is not initialized
B. Incorrect profit calculation logic
C. Missing return statement
D. Index out of range error due to accessing prices[i-1] when i=0

Solution

  1. Step 1: Check loop and index usage

    The loop starts at i=0, but code accesses prices[i-1], which is prices[-1] at i=0, causing index out of range error.
  2. Step 2: Identify fix

    Start loop from i=1 to avoid negative index access.
  3. Final Answer:

    Index out of range error due to accessing prices[i-1] when i=0 -> Option D
  4. Quick Check:

    Loop index must start at 1 to avoid error [OK]
Hint: Avoid negative indices by starting loop at 1 [OK]
Common Mistakes:
  • Starting loop at 0 but accessing i-1
  • Ignoring runtime errors
  • Not testing with small input arrays
5. Given the prices [3, 3, 5, 0, 0, 3, 1, 4], what is the maximum profit with at most two transactions?
hard
A. 7
B. 6
C. 5
D. 8

Solution

  1. Step 1: Understand two transactions limit

    We can buy and sell stocks at most twice to maximize profit.
  2. Step 2: Calculate max profit with two transactions

    First transaction: buy at 3, sell at 5 (profit 2) Second transaction: buy at 0, sell at 4 (profit 4) Total profit = 2 + 4 = 6
  3. Final Answer:

    6 -> Option B
  4. Quick Check:

    Two transactions max profit = 6 [OK]
Hint: Split array, find max profit left and right, sum max [OK]
Common Mistakes:
  • Counting overlapping transactions
  • Ignoring zero price days
  • Calculating only one transaction profit
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard