What is the main goal in the 'Buy and Sell Stocks' problem?
To find the maximum profit by choosing the best days to buy and sell stocks given their prices over time.
Click to reveal answer
beginner
In the single transaction variant, what is the key idea to find maximum profit?
Track the minimum price seen so far and calculate the profit if sold today; update max profit accordingly.
Click to reveal answer
intermediate
How does the multiple transactions variant differ from the single transaction variant?
You can buy and sell multiple times, so the goal is to sum all positive price differences between consecutive days.
Click to reveal answer
intermediate
What constraint does the 'at most two transactions' variant add?
You can complete at most two buy-sell transactions to maximize profit, requiring tracking profits from left and right passes.
Click to reveal answer
advanced
Why is dynamic programming useful in the 'Buy and Sell Stocks with cooldown' variant?
Because you must consider cooldown days after selling, DP helps track states like holding, sold, and cooldown to maximize profit.
Click to reveal answer
In the single transaction stock problem, what do you track to find max profit?
AMaximum price so far only
BMinimum price so far and max profit
CSum of all prices
DNumber of transactions
✗ Incorrect
Tracking the minimum price so far allows calculating potential profit if sold today, updating max profit.
For multiple transactions allowed, how do you calculate max profit?
ASum all positive differences between consecutive days
BBuy on first day, sell on last day
COnly one transaction allowed
DIgnore price drops
✗ Incorrect
Adding all positive price differences captures profit from every profitable buy-sell pair.
What is the main challenge in the 'at most two transactions' variant?
ANo transactions allowed
BOnly one transaction allowed
CTracking profits from two separate transactions efficiently
DIgnoring price changes
✗ Incorrect
You must find two non-overlapping transactions that maximize combined profit.
In the cooldown variant, what happens after selling a stock?
AYou must wait one day before buying again
BYou can buy immediately
CYou cannot buy ever again
DYou must sell again immediately
✗ Incorrect
Cooldown means you cannot buy on the day immediately after selling.
Which approach is best for solving complex variants like cooldown or transaction limits?
AGreedy without tracking states
BBrute Force
CSorting prices
DDynamic Programming
✗ Incorrect
Dynamic Programming efficiently tracks states and decisions to maximize profit under constraints.
Explain how to find maximum profit with only one buy and one sell allowed.
Think about the lowest price before the current day.
You got /3 concepts.
Describe the difference between multiple transactions allowed and cooldown variants.
Cooldown adds waiting days after selling.
You got /3 concepts.
Practice
(1/5)
1. What is the main goal when solving the Buy and Sell Stocks problem variants?
easy
A. Maximize the profit by choosing the best days to buy and sell stocks
B. Minimize the number of transactions regardless of profit
C. Find the day with the highest stock price only
D. Calculate the average stock price over all days
Solution
Step 1: Understand the problem objective
The problem asks to maximize profit by buying and selling stocks on certain days.
Step 2: Identify the key action
Choosing the best days to buy low and sell high maximizes profit.
Final Answer:
Maximize the profit by choosing the best days to buy and sell stocks -> Option A
Quick Check:
Goal = Maximize profit [OK]
Hint: Focus on maximizing profit, not just counting days [OK]
Common Mistakes:
Confusing profit maximization with minimizing transactions
Ignoring the selling day after buying
Thinking only about highest price day
2. Which of the following C code snippets correctly initializes the variable to track maximum profit as zero?
easy
A. int maxProfit = 0;
B. int maxProfit = -1;
C. int maxProfit = NULL;
D. int maxProfit = '0';
Solution
Step 1: Check variable initialization syntax
In C, integer variables are initialized with integer values, zero is valid.
Step 2: Validate each option
int maxProfit = 0; uses int maxProfit = 0; which is correct. int maxProfit = -1; uses -1 which is valid but not typical for profit initialization. int maxProfit = NULL; uses NULL which is for pointers, not int. int maxProfit = '0'; uses character '0' which is ASCII 48, not zero.
Final Answer:
int maxProfit = 0; -> Option A
Quick Check:
Correct int initialization = int maxProfit = 0; [OK]
Hint: Use zero integer for profit start, not NULL or char [OK]
Common Mistakes:
Using NULL for integer variables
Initializing with character '0' instead of number 0
Starting profit with negative values unnecessarily
3. What will be the output of the following C code that finds max profit with one transaction?
int prices[] = {7, 1, 5, 3, 6, 4};
int maxProfit = 0, minPrice = prices[0];
for (int i = 1; i < 6; i++) {
if (prices[i] < minPrice) minPrice = prices[i];
else if (prices[i] - minPrice > maxProfit) maxProfit = prices[i] - minPrice;
}
printf("%d", maxProfit);
medium
A. 4
B. 5
C. 6
D. 7
Solution
Step 1: Trace the loop to find minPrice and maxProfit
Hint: Track min price and update max profit on each day [OK]
Common Mistakes:
Not updating minPrice correctly
Calculating profit before updating minPrice
Confusing maxProfit with max price
4. Identify the bug in this C code snippet that tries to calculate max profit with unlimited transactions:
int maxProfit = 0;
int prices[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
if (prices[i] > prices[i-1]) {
maxProfit += prices[i] - prices[i-1];
}
}
printf("%d", maxProfit);
medium
A. The condition should be prices[i] < prices[i-1]
B. maxProfit should be initialized to -1
C. Loop starts at i=0 causing out-of-bounds access at prices[i-1]
D. The array size is incorrect
Solution
Step 1: Analyze loop index usage
The loop starts at i=0, so prices[i-1] is prices[-1], which is invalid memory access.
Step 2: Correct the loop start
Loop should start at i=1 to safely access prices[i-1].
Final Answer:
Loop starts at i=0 causing out-of-bounds access at prices[i-1] -> Option C
Quick Check:
Index error at i=0 [OK]
Hint: Start loop from 1 when accessing previous element [OK]
Common Mistakes:
Starting loop at 0 when accessing i-1
Incorrect comparison operator in if condition
Ignoring array bounds
5. Given the prices array {3, 3, 5, 0, 0, 3, 1, 4}, what is the maximum profit with at most two transactions?
hard
A. 8
B. 6
C. 5
D. 7
Solution
Step 1: Understand two transactions limit
We can buy and sell stocks at most twice to maximize profit.
Step 2: Calculate max profit for two transactions
First transaction: buy at 3 (day 0), sell at 5 (day 2), profit = 2. Second transaction: buy at 0 (day 3), sell at 4 (day 7), profit = 4. Total profit = 2 + 4 = 6.
Step 3: Check for better transactions
Alternatively, buy at 0 (day 3), sell at 3 (day 5), profit = 3. Then buy at 1 (day 6), sell at 4 (day 7), profit = 3. Total profit = 3 + 3 = 6. But better is buy at 0 (day 3), sell at 5 (day 2) is invalid (sell before buy). So best is 6 or 7 or 8? Actually, the maximum profit with two transactions is 7: Buy at 0 (day 3), sell at 3 (day 5), profit = 3. Buy at 1 (day 6), sell at 4 (day 7), profit = 3. Total profit = 6. But if we consider buy at 3 (day 0), sell at 5 (day 2), profit = 2. Buy at 0 (day 3), sell at 4 (day 7), profit = 4. Total profit = 6. However, the maximum profit is 7: Buy at 0 (day 3), sell at 5 (day 2) invalid. Buy at 0 (day 3), sell at 4 (day 7), profit = 4. Buy at 1 (day 6), sell at 4 (day 7), profit = 3. Total profit = 7. So the correct maximum profit is 7.
Final Answer:
7 -> Option D
Quick Check:
Two transactions max profit = 7 [OK]
Hint: Split array, find max profit left and right, sum max [OK]
Common Mistakes:
Counting overlapping transactions
Ignoring zero price days
Assuming unlimited transactions
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.