Bird
Raised Fist0
DSA Javaprogramming~10 mins

Buy and Sell Stocks All Variants in DSA Java - Execution Trace

Choose your learning style10 modes available
Concept Flow - Buy and Sell Stocks All Variants
Start: Prices Array
↓
Choose Variant
↓
One Transaction
↓
Find max diff
↓
Return max profit
The flow starts with the prices array, then chooses the variant of the problem, and follows the specific logic to find max profit.
Execution Sample
DSA Java
int maxProfitOneTransaction(int[] prices) {
  int minPrice = Integer.MAX_VALUE;
  int maxProfit = 0;
  for (int price : prices) {
    minPrice = Math.min(minPrice, price);
    maxProfit = Math.max(maxProfit, price - minPrice);
  }
  return maxProfit;
}
This code finds the maximum profit from one buy-sell transaction by tracking the minimum price and maximum profit.
Execution Table
StepOperationCurrent PriceminPricemaxProfitVisual State
1Initialize minPrice and maxProfit-∞0minPrice=∞, maxProfit=0
2Price=7, Update minPrice770minPrice=7, maxProfit=0
3Price=1, Update minPrice110minPrice=1, maxProfit=0
4Price=5, Calculate profit=5-1=4514maxProfit updated to 4
5Price=3, Calculate profit=3-1=2314maxProfit remains 4
6Price=6, Calculate profit=6-1=5615maxProfit updated to 5
7Price=4, Calculate profit=4-1=3415maxProfit remains 5
8End loop-15Final maxProfit=5
💡 Loop ends after last price; maxProfit=5 is returned
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6After Step 7Final
minPrice∞7111111
maxProfit00044555
Key Moments - 3 Insights
Why do we update minPrice before calculating profit?
We update minPrice first to ensure we always buy at the lowest price seen so far before calculating profit (see steps 3 and 4 in execution_table).
Why does maxProfit not update when price is 3 after minPrice is 1?
Because profit (3 - 1 = 2) is less than current maxProfit (4), so maxProfit remains unchanged (step 5).
What happens if prices array is empty or has one element?
The loop does not run or runs once, so maxProfit remains 0, meaning no profit possible.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4, what is the maxProfit value?
A4
B5
C0
D1
💡 Hint
Check the maxProfit column at step 4 in execution_table
At which step does minPrice update to 1?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look at minPrice changes in variable_tracker after step 3
If prices were strictly decreasing, what would maxProfit be at the end?
A0
BNegative value
CPrice difference between first and last
DInfinity
💡 Hint
Refer to key_moments about no profit possible when prices fall
Concept Snapshot
Buy and Sell Stocks Variants:
- One transaction: Track minPrice and maxProfit
- Multiple transactions: Sum all positive profits
- At most K transactions: Use DP table
- Always update minPrice before profit
- Return maxProfit or total profit
Full Transcript
This visual execution traces the Buy and Sell Stocks problem for the one transaction variant. We start with an array of prices. We initialize minPrice to infinity and maxProfit to zero. For each price, we update minPrice if the current price is lower. Then we calculate profit as current price minus minPrice and update maxProfit if this profit is higher. The execution table shows each step with variable values and the visual state of minPrice and maxProfit. Key moments clarify why minPrice updates first and why maxProfit only updates when profit is higher. The quiz tests understanding of variable values at specific steps and edge cases like decreasing prices. The snapshot summarizes the approach for all variants.

Practice

(1/5)
1. What is the main goal when solving the Buy and Sell Stocks problem?
easy
A. Minimize the number of transactions made
B. Find the day with the highest stock price
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 low and selling high on different days.
  2. Step 2: Identify the correct objective

    Maximizing profit means choosing the best buy and sell days, not minimizing transactions or finding averages.
  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 difference between buy and sell days [OK]
Common Mistakes:
  • Confusing profit maximization with minimizing transactions
  • Thinking the goal is to find highest price day only
  • Ignoring the buy day before sell day order
2. Which of the following Java code snippets correctly initializes an array of stock prices for 5 days?
easy
A. int[] prices = {7, 1, 5, 3, 6};
B. int prices = [7, 1, 5, 3, 6];
C. int[] prices = (7, 1, 5, 3, 6);
D. int prices[] = 7, 1, 5, 3, 6;

Solution

  1. Step 1: Check Java array initialization syntax

    Java arrays are initialized with curly braces {} and type declaration with [] after type.
  2. Step 2: Validate each option

    Parentheses () are invalid, square brackets [] for values are invalid, missing braces {} and improper assignment are invalid. int[] prices = {7, 1, 5, 3, 6}; uses correct syntax.
  3. Final Answer:

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

    Correct array syntax = int[] prices = {7, 1, 5, 3, 6}; [OK]
Hint: Use curly braces {} for array values in Java [OK]
Common Mistakes:
  • Using square brackets [] for values instead of curly braces
  • Missing type[] before variable name
  • Using parentheses () instead of braces
3. What is the output of the following Java code that finds max profit with one transaction?
int[] prices = {7, 1, 5, 3, 6, 4};
int minPrice = Integer.MAX_VALUE;
int maxProfit = 0;
for (int price : prices) {
    if (price < minPrice) minPrice = price;
    else if (price - minPrice > maxProfit) maxProfit = price - minPrice;
}
System.out.println(maxProfit);
medium
A. 5
B. 6
C. 4
D. 7

Solution

  1. Step 1: Track minimum price and max profit during iteration

    Prices: 7,1,5,3,6,4. minPrice updates to 7 then 1. maxProfit updates when price - minPrice is greater.
  2. Step 2: Calculate max profit step-by-step

    At price=5, profit=5-1=4; maxProfit=4. At price=6, profit=6-1=5; maxProfit=5. At price=4, profit=4-1=3; maxProfit stays 5.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    Max profit = 6 - 1 = 5 [OK]
Hint: Track min price and update max profit on the fly [OK]
Common Mistakes:
  • Confusing max profit with max price
  • Not updating minPrice correctly
  • Calculating profit without checking minPrice
4. Identify the error in this Java code snippet that attempts to calculate max profit with multiple transactions:
int maxProfit = 0;
for (int i = 1; i < prices.length; i++) {
    if (prices[i] > prices[i - 1])
        maxProfit += prices[i] - prices[i - 1];
    else
        i++;
}
System.out.println(maxProfit);
medium
A. Loop should start from i = 0
B. Missing initialization of maxProfit
C. Using prices[i] instead of prices[i-1] in calculation
D. Incorrect increment of loop variable inside else block

Solution

  1. Step 1: Analyze loop increment and conditions

    The loop increments i each iteration, but inside else block it increments i again causing skipping elements.
  2. Step 2: Identify why extra increment causes error

    Extra i++ skips days, missing some profit opportunities and causing incorrect result.
  3. Final Answer:

    Incorrect increment of loop variable inside else block -> Option D
  4. Quick Check:

    Loop variable increment only once per iteration [OK]
Hint: Avoid changing loop variable inside loop body [OK]
Common Mistakes:
  • Incrementing loop variable twice causing skips
  • Starting loop from wrong index
  • Confusing price indices in calculation
5. Given an array of stock prices, how would you modify the algorithm to find the maximum profit with at most two transactions? Choose the best approach.
hard
A. Buy on the lowest price day and sell on the highest price day only.
B. Use two passes: first pass calculates max profit up to each day, second pass calculates max profit from each day to end, then combine.
C. Use a single pass and sum all positive differences between consecutive days.
D. Sort the prices array and pick the two largest differences.

Solution

  1. Step 1: Understand the two transaction constraint

    At most two transactions means we can buy and sell twice, but transactions cannot overlap.
  2. Step 2: Use two-pass approach for max profit calculation

    First pass calculates max profit from day 0 to i, second pass calculates max profit from i to end. Combining these gives max profit with two transactions.
  3. Final Answer:

    Use two passes: first pass calculates max profit up to each day, second pass calculates max profit from each day to end, then combine. -> Option B
  4. Quick Check:

    Two-pass method = Use two passes: first pass calculates max profit up to each day, second pass calculates max profit from each day to end, then combine. [OK]
Hint: Split problem into two single-transaction profits [OK]
Common Mistakes:
  • Sorting prices loses day order information
  • Summing all positive differences allows unlimited transactions
  • Ignoring transaction count limit
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