Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Buy and Sell Stocks All Variants in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main goal in the 'Buy and Sell Stocks' problem?
To maximize profit by choosing the best days to buy and sell stocks given their prices over time.
Click to reveal answer
beginner
In the 'Buy and Sell Stocks I' variant, how many transactions are allowed?
Only one transaction is allowed: buy once and sell once.
Click to reveal answer
intermediate
What is the key difference between 'Buy and Sell Stocks I' and 'Buy and Sell Stocks II'?
'Stocks I' allows only one transaction, while 'Stocks II' allows unlimited transactions.
Click to reveal answer
intermediate
How does the 'Buy and Sell Stocks with Cooldown' variant affect trading?
After selling a stock, you must wait one day before buying again (cooldown period).
Click to reveal answer
advanced
What is the purpose of dynamic programming in 'Buy and Sell Stocks with Transaction Fee'?
To efficiently calculate maximum profit by considering transaction fees and multiple transactions.
Click to reveal answer
In 'Buy and Sell Stocks I', what is the best strategy to maximize profit?
AFind the lowest price day to buy and highest price day after it to sell
BBuy and sell every day
CBuy on the last day and sell on the first day
DIgnore prices and pick random days
In 'Buy and Sell Stocks II', how many transactions can you make?
AOnly one
BNone
CExactly two
DUnlimited
What does the cooldown period mean in 'Buy and Sell Stocks with Cooldown'?
AYou cannot buy and sell on the same day
BYou can only buy once
CYou must wait one day after selling before buying again
DYou cannot sell stocks
Why do we use dynamic programming in 'Buy and Sell Stocks with Transaction Fee'?
ATo handle transaction fees and multiple transactions efficiently
BTo avoid calculating profit repeatedly
CTo sort the prices
DTo buy stocks randomly
Which variant restricts the number of transactions to a fixed number k?
ABuy and Sell Stocks II
BBuy and Sell Stocks with k Transactions
CBuy and Sell Stocks I
DBuy and Sell Stocks with Cooldown
Explain the differences between the main variants of the 'Buy and Sell Stocks' problem.
Think about how many transactions are allowed and any extra rules like cooldown or fees.
You got /5 concepts.
    Describe how dynamic programming helps solve the 'Buy and Sell Stocks' problems with constraints.
    Focus on how breaking the problem into smaller parts helps.
    You got /5 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

      1. Step 1: Understand the problem goal

        The problem asks to find the best days to buy and sell stocks to get the highest profit.
      2. Step 2: Identify the objective

        Maximizing profit means buying low and selling high at the right times.
      3. Final Answer:

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

        Goal = Maximize profit [OK]
      Hint: Focus on profit maximization, not just prices or counts [OK]
      Common Mistakes:
      • Thinking the goal is to minimize transactions
      • Only looking for highest price day
      • Calculating average price instead of profit
      2. Which of the following is the correct syntax to initialize a variable maxProfit to 0 in JavaScript?
      easy
      A. var maxProfit == 0;
      B. let maxProfit = 0;
      C. maxProfit := 0;
      D. int maxProfit = 0;

      Solution

      1. Step 1: Identify correct JavaScript variable declaration

        JavaScript uses let or const for variable declaration and single equals = for assignment.
      2. Step 2: Check each option

        let maxProfit = 0; uses let maxProfit = 0; which is correct syntax.
      3. Final Answer:

        let maxProfit = 0; -> Option B
      4. Quick Check:

        Variable declaration with let and = assignment [OK]
      Hint: Use let or const with single = for assignment in JavaScript [OK]
      Common Mistakes:
      • Using double equals == for assignment
      • Using := which is not JavaScript syntax
      • Using int which is not a JavaScript keyword
      3. What will be the output of the following code snippet?
      const prices = [7,1,5,3,6,4];
      let minPrice = Infinity;
      let maxProfit = 0;
      for (let price of prices) {
        if (price < minPrice) minPrice = price;
        else if (price - minPrice > maxProfit) maxProfit = price - minPrice;
      }
      console.log(maxProfit);
      medium
      A. 7
      B. 6
      C. 4
      D. 5

      Solution

      1. Step 1: Track minimum price and maximum profit

        Iterate prices: minPrice updates to 7, then 1; maxProfit updates when price - minPrice is larger.
      2. Step 2: Calculate maxProfit step-by-step

        Prices: 7 (minPrice=7), 1 (minPrice=1), 5 (profit=4), 3 (profit=2), 6 (profit=5), 4 (profit=3). Max profit is 5.
      3. Final Answer:

        5 -> Option D
      4. Quick Check:

        Max profit = 5 [OK]
      Hint: Track min price and update max profit on the fly [OK]
      Common Mistakes:
      • Confusing minPrice update logic
      • Calculating profit incorrectly
      • Using max price instead of max profit
      4. The following code is intended to find the maximum profit from one transaction but has a bug. What is the bug?
      function maxProfit(prices) {
        let minPrice = 0;
        let maxProfit = 0;
        for (let price of prices) {
          if (price < minPrice) minPrice = price;
          else if (price - minPrice > maxProfit) maxProfit = price - minPrice;
        }
        return maxProfit;
      }
      medium
      A. minPrice should be initialized to Infinity, not 0
      B. maxProfit should be initialized to -Infinity
      C. The for loop should use index instead of for-of
      D. The return statement is missing

      Solution

      1. Step 1: Check initialization of minPrice

        minPrice is set to 0, but prices can be greater than 0, so minPrice never updates correctly if all prices are above 0.
      2. Step 2: Correct initialization

        minPrice should start at Infinity to ensure it updates to the first price correctly.
      3. Final Answer:

        minPrice should be initialized to Infinity, not 0 -> Option A
      4. Quick Check:

        minPrice init = Infinity [OK]
      Hint: Initialize minPrice to Infinity to track minimum correctly [OK]
      Common Mistakes:
      • Initializing minPrice to 0 causes wrong min tracking
      • Thinking maxProfit needs -Infinity initialization
      • Confusing loop types for this problem
      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. 5
      B. 6
      C. 7
      D. 4

      Solution

      1. Step 1: Understand two transactions limit

        We can buy and sell twice to maximize profit, but transactions cannot overlap.
      2. Step 2: Calculate profits for two transactions

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

        7 -> Option C
      4. Quick Check:

        Two transactions profit = 7 [OK]
      Hint: Split array, find max profit in two parts, sum them [OK]
      Common Mistakes:
      • Trying to do more than two transactions
      • Adding profits from overlapping transactions
      • Missing the best buy/sell days for each transaction
      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