Bird
Raised Fist0
DSA C#programming~10 mins

Buy and Sell Stocks All Variants in DSA C# - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to find the maximum profit from a single buy and sell.

DSA C#
public int MaxProfit(int[] prices) {
    int minPrice = int.MaxValue;
    int maxProfit = 0;
    foreach (int price in prices) {
        if (price < [1]) {
            minPrice = price;
        } else if (price - minPrice > maxProfit) {
            maxProfit = price - minPrice;
        }
    }
    return maxProfit;
}
Drag options to blanks, or click blank then click option'
Aprice
BminPrice
CmaxProfit
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using maxProfit instead of minPrice in the comparison.
Not updating minPrice correctly.
2fill in blank
medium

Complete the code to calculate maximum profit with unlimited transactions.

DSA C#
public int MaxProfitUnlimited(int[] prices) {
    int profit = 0;
    for (int i = 1; i < prices.Length; i++) {
        if (prices[i] > [1]) {
            profit += prices[i] - prices[i - 1];
        }
    }
    return profit;
}
Drag options to blanks, or click blank then click option'
Aprices[i + 1]
Bprices[i]
Cprices[0]
Dprices[i - 1]
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing prices[i] with prices[i] (same day).
Using prices[i + 1] which can cause index out of range.
3fill in blank
hard

Fix the error in the code to calculate max profit with at most two transactions.

DSA C#
public int MaxProfitTwoTransactions(int[] prices) {
    int n = prices.Length;
    int[] leftProfits = new int[n];
    int[] rightProfits = new int[n];

    int minPrice = prices[0];
    for (int i = 1; i < n; i++) {
        minPrice = Math.Min(minPrice, prices[i]);
        leftProfits[i] = Math.Max(leftProfits[i - 1], prices[i] - [1]);
    }

    int maxPrice = prices[n - 1];
    for (int i = n - 2; i >= 0; i--) {
        maxPrice = Math.Max(maxPrice, prices[i]);
        rightProfits[i] = Math.Max(rightProfits[i + 1], maxPrice - prices[i]);
    }

    int maxProfit = 0;
    for (int i = 0; i < n; i++) {
        maxProfit = Math.Max(maxProfit, leftProfits[i] + rightProfits[i]);
    }
    return maxProfit;
}
Drag options to blanks, or click blank then click option'
AminPrice
Bprices[i - 1]
CmaxPrice
Dprices[i]
Attempts:
3 left
💡 Hint
Common Mistakes
Using prices[i] instead of minPrice in subtraction.
Using maxPrice in the left profits calculation.
4fill in blank
hard

Fill both blanks to implement max profit with cooldown period after selling.

DSA C#
public int MaxProfitWithCooldown(int[] prices) {
    int n = prices.Length;
    if (n <= 1) return 0;

    int[] sell = new int[n];
    int[] buy = new int[n];
    buy[0] = -prices[0];
    sell[0] = 0;

    for (int i = 1; i < n; i++) {
        buy[i] = Math.Max(buy[i - 1], [1] - prices[i]);
        sell[i] = Math.Max(sell[i - 1], buy[i - 1] + [2]);
    }

    return sell[n - 1];
}
Drag options to blanks, or click blank then click option'
Asell[i - 2]
Bsell[i - 1]
Cprices[i - 1]
Dprices[i]
Attempts:
3 left
💡 Hint
Common Mistakes
Using sell[i - 1] instead of sell[i - 2] for cooldown.
Incorrectly adding prices in sell calculation.
5fill in blank
hard

Fill all three blanks to implement max profit with transaction fee.

DSA C#
public int MaxProfitWithFee(int[] prices, int fee) {
    int n = prices.Length;
    int cash = 0;
    int hold = -prices[0];

    for (int i = 1; i < n; i++) {
        cash = Math.Max(cash, hold + [1] - [2]);
        hold = Math.Max(hold, cash - [3]);
    }

    return cash;
}
Drag options to blanks, or click blank then click option'
Aprices[i]
Bfee
Dfee + 1
Attempts:
3 left
💡 Hint
Common Mistakes
Subtracting fee when buying instead of selling.
Using fee + 1 which is incorrect.

Practice

(1/5)
1. What is the main goal when solving the Buy and Sell Stocks problem variants?
easy
A. Minimize the number of transactions regardless of profit
B. Find the stock price on the last day only
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 objective

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

    Choosing the best days to buy low and sell high maximizes profit.
  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 transactions [OK]
Common Mistakes:
  • Confusing profit with number of transactions
  • Ignoring the buy before sell rule
  • Trying to find average price instead of max profit
2. Which of the following C# code snippets correctly initializes an array of stock prices for the Buy and Sell Stocks problem?
easy
A. int prices[] = new int[6] {7, 1, 5, 3, 6, 4};
B. int prices = {7, 1, 5, 3, 6, 4};
C. int[] prices = (7, 1, 5, 3, 6, 4);
D. int[] prices = new int[] {7, 1, 5, 3, 6, 4};

Solution

  1. Step 1: Check correct array initialization syntax in C#

    In C#, arrays are initialized with int[] prices = new int[] { ... };.
  2. Step 2: Verify each option

    int[] prices = new int[] {7, 1, 5, 3, 6, 4}; uses correct syntax. The other options have invalid syntax: one declares a single int without array type, another uses parentheses instead of braces, and the last has incorrect array declaration style.
  3. Final Answer:

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

    Correct C# array syntax = int[] prices = new int[] {7, 1, 5, 3, 6, 4}; [OK]
Hint: Use int[] arr = new int[] { ... }; for arrays [OK]
Common Mistakes:
  • Omitting 'new int[]' when initializing arrays
  • Using parentheses instead of braces
  • Declaring arrays like in C or Java incorrectly
3. What is the output of the following C# code that finds the maximum profit with only one transaction allowed?
int[] prices = {7, 1, 5, 3, 6, 4};
int minPrice = int.MaxValue;
int maxProfit = 0;
foreach (int price in prices) {
    if (price < minPrice) minPrice = price;
    else if (price - minPrice > maxProfit) maxProfit = price - minPrice;
}
Console.WriteLine(maxProfit);
medium
A. 6
B. 5
C. 4
D. 7

Solution

  1. Step 1: Trace the minimum price and max profit updates

    Prices: 7,1,5,3,6,4. Min price updates to 7 then 1. Max profit updates when price - minPrice > maxProfit: 5-1=4, 6-1=5.
  2. Step 2: Identify final max profit

    Max profit is 5, achieved by buying at 1 and selling at 6.
  3. Final Answer:

    5 -> Option B
  4. Quick Check:

    Max profit one transaction = 5 [OK]
Hint: Track min price and update max profit on each day [OK]
Common Mistakes:
  • Confusing max profit with max price
  • Not updating min price correctly
  • Calculating profit without checking min price
4. The following code is intended to calculate the maximum profit with unlimited transactions allowed. What is the bug?
int maxProfit = 0;
for (int i = 1; i < prices.Length; i++) {
    if (prices[i] > prices[i - 1]) {
        maxProfit += prices[i] - prices[i - 1];
    }
}
return maxProfit;
medium
A. There is no bug; code works correctly
B. The code does not handle empty price array
C. The loop should start from i = 0
D. The code incorrectly adds profit when prices decrease

Solution

  1. Step 1: Understand the logic for unlimited transactions

    The code adds profit for every increase from day i-1 to i, which is correct for unlimited transactions.
  2. Step 2: Check for bugs

    The loop starts at 1 to compare with previous day. It skips empty array handling but not asked here. No incorrect profit addition.
  3. Final Answer:

    There is no bug; code works correctly -> Option A
  4. Quick Check:

    Unlimited transactions profit logic = correct [OK]
Hint: Add profit only when price increases day-to-day [OK]
Common Mistakes:
  • Starting loop at wrong index
  • Adding profit on price drops
  • Ignoring empty or single-element arrays
5. Given the prices array {3, 3, 5, 0, 0, 3, 1, 4} and a limit of at most two transactions, what is the maximum profit achievable?
hard
A. 8
B. 7
C. 5
D. 6

Solution

  1. Step 1: Understand the two transactions limit

    We can buy and sell at most twice to maximize profit.
  2. Step 2: Calculate max profit by splitting days

    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. But better transactions are buy at 0 sell at 3 (profit 3), then buy at 1 sell at 4 (profit 3), total 6. However, the maximum profit is actually 8 by buying at 0 and selling at 5 (profit 5), then buying at 1 and selling at 4 (profit 3).
  3. Final Answer:

    8 -> Option A
  4. Quick Check:

    Two transactions max profit = 8 [OK]
Hint: Split array to find best two transaction profits [OK]
Common Mistakes:
  • Counting more than two transactions
  • Not choosing optimal buy/sell days
  • Adding profits incorrectly
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