Bird
Raised Fist0
DSA C++programming~5 mins

Maximum Product Subarray in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main goal of the Maximum Product Subarray problem?
To find the contiguous subarray within an array that has the largest product of its elements.
Click to reveal answer
intermediate
Why do we track both maximum and minimum products at each step in the Maximum Product Subarray problem?
Because a negative number can turn a minimum product into a maximum product when multiplied, so tracking both helps handle negative values correctly.
Click to reveal answer
beginner
In the Maximum Product Subarray problem, what happens when the current number is zero?
The product resets because zero multiplied by anything is zero, so we start fresh from the next element.
Click to reveal answer
beginner
What is the time complexity of the optimal solution for the Maximum Product Subarray problem?
O(n), where n is the number of elements in the array, because we scan the array once while keeping track of max and min products.
Click to reveal answer
intermediate
Explain the role of swapping max and min products when encountering a negative number in the Maximum Product Subarray algorithm.
When a negative number is encountered, the maximum product so far becomes the minimum if multiplied by that negative number, and vice versa. Swapping ensures correct tracking of max and min products.
Click to reveal answer
What does the Maximum Product Subarray problem ask you to find?
AThe subarray with the largest product
BThe subarray with the largest sum
CThe subarray with the smallest product
DThe subarray with the largest length
Why do we keep track of both maximum and minimum products at each step?
ATo handle zeros in the array
BBecause a negative number can flip min to max and vice versa
CTo handle positive numbers only
DTo find the longest subarray
What should you do when the current number is zero in the Maximum Product Subarray algorithm?
AReset the product calculations
BAdd it to the product
CMultiply it with the previous product
DIgnore it and continue
What is the time complexity of the optimal Maximum Product Subarray solution?
AO(n^2)
BO(n log n)
CO(n)
DO(log n)
When encountering a negative number, what key step is done in the algorithm?
AReset max and min products to zero
BOnly update the max product
CIgnore the negative number
DSwap max and min products before multiplying
Describe the approach to solve the Maximum Product Subarray problem and why tracking both max and min products is necessary.
Think about how negative numbers affect multiplication.
You got /5 concepts.
    Explain how zeros and negative numbers affect the Maximum Product Subarray calculation and how the algorithm handles them.
    Consider the effect of multiplication by zero and negative values.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the Maximum Product Subarray problem ask you to find in an integer array?
      easy
      A. The subarray with the smallest product of its elements
      B. The contiguous subarray with the largest product of its elements
      C. The longest subarray with all positive numbers
      D. The subarray with the maximum sum of its elements

      Solution

      1. Step 1: Understand the problem statement

        The problem asks for a contiguous part of the array where the product of all numbers is the highest possible.
      2. Step 2: Differentiate from similar problems

        This is different from maximum sum subarray; here we multiply elements, not add.
      3. Final Answer:

        The contiguous subarray with the largest product of its elements -> Option B
      4. Quick Check:

        Maximum product subarray = largest product subarray [OK]
      Hint: Look for contiguous subarray with max multiplication, not sum [OK]
      Common Mistakes:
      • Confusing product with sum
      • Ignoring negative numbers impact
      • Thinking about non-contiguous subarrays
      2. Which of the following C++ code snippets correctly initializes variables to track maximum and minimum products for the Maximum Product Subarray problem?
      easy
      A. int maxProd = 1, minProd = INT_MIN;
      B. int maxProd = 0, minProd = 0;
      C. int maxProd = INT_MIN, minProd = INT_MAX;
      D. int maxProd = 1, minProd = 1;

      Solution

      1. Step 1: Understand initialization role

        We start with 1 because multiplying by 1 doesn't change product; it acts as neutral.
      2. Step 2: Check each option

        int maxProd = 1, minProd = 1; uses 1 for both maxProd and minProd, which is correct for product tracking.
      3. Final Answer:

        int maxProd = 1, minProd = 1; -> Option D
      4. Quick Check:

        Initialize maxProd and minProd to 1 [OK]
      Hint: Initialize max and min product as 1 to start multiplication [OK]
      Common Mistakes:
      • Using 0 which resets product
      • Using INT_MIN or INT_MAX incorrectly
      • Not initializing min product
      3. What is the output of the following C++ code snippet?
      int arr[] = {2, 3, -2, 4};
      int n = 4;
      int maxProd = arr[0], minProd = arr[0], result = arr[0];
      for (int i = 1; i < n; i++) {
          if (arr[i] < 0) std::swap(maxProd, minProd);
          maxProd = std::max(arr[i], maxProd * arr[i]);
          minProd = std::min(arr[i], minProd * arr[i]);
          result = std::max(result, maxProd);
      }
      std::cout << result << std::endl;
      medium
      A. 6
      B. 4
      C. -2
      D. 8

      Solution

      1. Step 1: Trace the loop iterations

        Start with maxProd=2, minProd=2, result=2. - i=1 (3): arr[i]=3 >0, no swap maxProd = max(3, 2*3)=6 minProd = min(3, 2*3)=3 result = max(2,6)=6 - i=2 (-2): arr[i]<0, swap maxProd and minProd maxProd=3, minProd=6 maxProd = max(-2, 3*(-2))=max(-2,-6)=-2 minProd = min(-2, 6*(-2))=min(-2,-12)=-12 result = max(6,-2)=6 - i=3 (4): arr[i]=4 >0, no swap maxProd = max(4, -2*4)=max(4,-8)=4 minProd = min(4, -12*4)=min(4,-48)=-48 result = max(6,4)=6
      2. Step 2: Determine final result

        The maximum product found is 6.
      3. Final Answer:

        6 -> Option A
      4. Quick Check:

        Maximum product subarray = 6 [OK]
      Hint: Swap max and min when negative number appears [OK]
      Common Mistakes:
      • Not swapping max and min on negative
      • Confusing max and min updates
      • Ignoring initial values
      4. Identify the bug in this C++ code snippet for Maximum Product Subarray:
      int maxProduct(int arr[], int n) {
          int maxProd = 1, minProd = 1, result = 1;
          for (int i = 0; i < n; i++) {
              if (arr[i] < 0) std::swap(maxProd, minProd);
              maxProd = std::max(arr[i], maxProd * arr[i]);
              minProd = std::min(arr[i], minProd * arr[i]);
              result = std::max(result, maxProd);
          }
          return result;
      }
      medium
      A. maxProd and minProd should be initialized to 0
      B. Swapping maxProd and minProd should happen after updating them
      C. Starting loop from i=0 causes incorrect initial values
      D. Result should be initialized to INT_MIN

      Solution

      1. Step 1: Analyze loop start and initial values

        Starting loop at i=0 uses maxProd=1 and minProd=1 before processing first element, which can cause wrong product calculations.
      2. Step 2: Correct approach for initialization and loop

        Initialize maxProd, minProd, and result to arr[0] and start loop from i=1 to correctly track products.
      3. Final Answer:

        Starting loop from i=0 causes incorrect initial values -> Option C
      4. Quick Check:

        Loop should start at 1 with initial values from arr[0] [OK]
      Hint: Initialize with first element, start loop from second element [OK]
      Common Mistakes:
      • Loop starting at 0 with default initial values
      • Swapping max and min at wrong time
      • Wrong initialization of result
      5. Given the array int arr[] = {-1, -3, -10, 0, 60};, what is the maximum product of any contiguous subarray?
      hard
      A. 60
      B. 180
      C. 0
      D. -1

      Solution

      1. Step 1: Analyze subarrays and their products

        Check products of contiguous subarrays: - [-1] = -1 - [-1, -3] = 3 - [-1, -3, -10] = 30 - [-3, -10] = 30 - [-3, -10, 0] = 0 - [0, 60] = 0 - [60] = 60 - [-1, -3, -10, 0, 60] = 0 The maximum product is 30 from subarray [-1, -3, -10].
      2. Step 2: Check if any larger product exists

        Although 60 is a single element, the product 30 from three negatives is smaller. The maximum product is 30, but 180 is possible if we consider [-3, -10, 0, 60] incorrectly. Actually, the maximum product is 60 from [60]. However, the product of [-1, -3, -10] is 30, not 180. The option 180 is incorrect as no contiguous subarray produces 180.
      3. Final Answer:

        60 -> Option A
      4. Quick Check:

        Max product subarray = 60 [OK]
      Hint: Multiply negatives carefully; zero resets product [OK]
      Common Mistakes:
      • Ignoring zero breaks subarray
      • Multiplying across zero incorrectly
      • Not considering negative number pairs
      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