Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Maximum Product Subarray in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main challenge when finding the maximum product subarray in an array of integers?
The main challenge is handling negative numbers because multiplying two negatives can become positive, so we must track both the maximum and minimum products at each step.
Click to reveal answer
intermediate
In the Maximum Product Subarray problem, why do we keep track of both the maximum and minimum products at each index?
Because a minimum (negative) product multiplied by a negative number can become the maximum product, so tracking both helps handle sign changes correctly.
Click to reveal answer
beginner
What is the time complexity of the optimal solution for the Maximum Product Subarray problem?
The time complexity is O(n), where n is the length of the array, because we scan the array once while keeping track of max and min products.
Click to reveal answer
intermediate
Given the array [-2, 3, -4], what is the maximum product subarray and its product?
The maximum product subarray is the entire array [-2, 3, -4] with product 24, because (-2) * 3 * (-4) = 24.
Click to reveal answer
beginner
What variables do you need to maintain while iterating through the array to solve the Maximum Product Subarray problem?
You need to maintain: current maximum product ending at the current index, current minimum product ending at the current index, and the global maximum product found so far.
Click to reveal answer
Why do we update the minimum product along with the maximum product in the Maximum Product Subarray problem?
ABecause minimum product helps to find the smallest subarray
BBecause minimum product is always less than maximum product
CBecause the minimum product can become maximum if multiplied by a negative number
DBecause minimum product is used to count zeros
What is the initial value of the maximum and minimum product when starting the iteration?
A0
B1
CInfinity
DThe first element of the array
If the current number is zero, what should you do with the max and min products?
AReset both max and min products to zero
BReset both max and min products to the current number (zero)
CReset both max and min products to one
DIgnore zero and continue
What is the time complexity of the Maximum Product Subarray solution?
AO(n)
BO(1)
CO(log n)
DO(n^2)
Which of these is NOT needed to solve the Maximum Product Subarray problem?
ASorting the array
BTracking current min product
CTracking global max product
DTracking current max product
Explain how to solve the Maximum Product Subarray problem step-by-step.
Think about how negative numbers affect product and why tracking min product helps.
You got /6 concepts.
    Describe why tracking both maximum and minimum products is important in the Maximum Product Subarray problem.
    Consider what happens when you multiply by a negative number.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the "Maximum Product Subarray" problem ask you to find in an array of integers?
      easy
      A. The subarray with the largest sum 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 smallest product 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 as large as possible.
      2. Step 2: Differentiate from similar problems

        This is different from finding the largest sum or smallest product; it specifically focuses on the product of elements in a continuous segment.
      3. Final Answer:

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

        Maximum product subarray means largest product segment [OK]
      Hint: Look for continuous elements with max product, not sum [OK]
      Common Mistakes:
      • Confusing product with sum
      • Ignoring that subarray must be contiguous
      • Thinking about longest subarray instead of max product
      2. Which of the following TypeScript function signatures correctly represents a function to find the maximum product subarray?
      easy
      A. function maxProduct(nums: number[]): number
      B. function maxProduct(nums: string): number
      C. function maxProduct(nums: number): number[]
      D. function maxProduct(nums: number[]): string

      Solution

      1. Step 1: Check input parameter type

        The input should be an array of numbers, so nums: number[] is correct.
      2. Step 2: Check return type

        The function returns the maximum product value, which is a number, not an array or string.
      3. Final Answer:

        function maxProduct(nums: number[]): number -> Option A
      4. Quick Check:

        Input array, output number matches signature [OK]
      Hint: Input is number array, output is single number [OK]
      Common Mistakes:
      • Using string type for input or output
      • Returning array instead of number
      • Incorrect parameter types
      3. What is the output of the following TypeScript code?
      function maxProduct(nums: number[]): number {
        let maxProd = nums[0];
        let minProd = nums[0];
        let result = nums[0];
        for (let i = 1; i < nums.length; i++) {
          if (nums[i] < 0) {
            [maxProd, minProd] = [minProd, maxProd];
          }
          maxProd = Math.max(nums[i], maxProd * nums[i]);
          minProd = Math.min(nums[i], minProd * nums[i]);
          result = Math.max(result, maxProd);
        }
        return result;
      }
      
      console.log(maxProduct([2, 3, -2, 4]));
      medium
      A. 6
      B. 4
      C. -2
      D. 24

      Solution

      1. Step 1: Initialize variables and start loop

        maxProd, minProd, and result start at 2. Loop from index 1 to 3.
      2. Step 2: Iterate and update maxProd, minProd, and result

        At i=1 (3): maxProd = max(3, 2*3)=6, minProd = min(3, 2*3)=3, result=6.
        At i=2 (-2): nums[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.
        At i=3 (4): maxProd = max(4, -2*4) = max(4, -8) = 4.
        minProd = min(4, -12*4) = min(4, -48) = -48.
        result = max(6, 4) = 6.
      3. Final Answer:

        6 -> Option A
      4. Quick Check:

        Max product subarray is [2,3] = 6 [OK]
      Hint: Track max and min products, swap on negative [OK]
      Common Mistakes:
      • Not swapping max and min on negative number
      • Only tracking max product, ignoring min product
      • Confusing max product with sum
      4. Identify the bug in this TypeScript function for maximum product subarray:
      function maxProduct(nums: number[]): number {
        let maxProd = 1;
        let minProd = 1;
        let result = Number.MIN_VALUE;
        for (let num of nums) {
          if (num < 0) {
            let temp = maxProd;
            maxProd = minProd;
            minProd = temp;
          }
          maxProd = Math.max(num, maxProd * num);
          minProd = Math.min(num, minProd * num);
          result = Math.max(result, maxProd);
        }
        return result;
      }
      medium
      A. Initializing maxProd and minProd to 0 instead of 1
      B. Not swapping maxProd and minProd when num is positive
      C. Using a for loop instead of forEach
      D. Using Number.MIN_VALUE instead of Number.NEGATIVE_INFINITY for result

      Solution

      1. Step 1: Understand Number.MIN_VALUE usage

        Number.MIN_VALUE is the smallest positive number close to zero, not the most negative number.
      2. Step 2: Correct initialization for result

        To track maximum product correctly, result should start at Number.NEGATIVE_INFINITY to handle negative products properly.
      3. Final Answer:

        Using Number.MIN_VALUE instead of Number.NEGATIVE_INFINITY for result -> Option D
      4. Quick Check:

        Use Number.NEGATIVE_INFINITY for max tracking [OK]
      Hint: Use Number.NEGATIVE_INFINITY for max initial value [OK]
      Common Mistakes:
      • Confusing Number.MIN_VALUE with negative infinity
      • Not swapping max and min on negative number
      • Wrong initial values for maxProd and minProd
      5. Given the array [-1, -3, -10, 0, 60], what is the maximum product subarray and its product?
      hard
      A. Subarray: [-1, -3, -10], Product: -30
      B. Subarray: [-3, -10, 0], Product: 0
      C. Subarray: [60], Product: 60
      D. Subarray: [-10, 0, 60], Product: 0

      Solution

      1. Step 1: Analyze subarrays and their products

        Check products of contiguous subarrays:
        [-1] = -1
        [-1, -3] = 3
        [-1, -3, -10] = -30
        [-3] = -3
        [-3, -10] = 30
        [-10] = -10
        [0] = 0
        [60] = 60
      2. Step 2: Identify maximum product

        The largest product found is 60 from subarray [60].
      3. Final Answer:

        Subarray: [60], Product: 60 -> Option C
      4. Quick Check:

        Max product is 60 from single element [60] [OK]
      Hint: Check single elements and negative pairs carefully [OK]
      Common Mistakes:
      • Assuming negative product is maximum
      • Ignoring single element subarrays
      • Confusing zero product with max product
      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