Challenge - 5 Problems
Maximum Product Subarray Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of Maximum Product Subarray Calculation
What is the output of the following code that finds the maximum product of a contiguous subarray?
DSA Python
def max_product_subarray(nums): max_prod = min_prod = result = nums[0] for num in nums[1:]: candidates = (num, max_prod * num, min_prod * num) max_prod = max(candidates) min_prod = min(candidates) result = max(result, max_prod) return result print(max_product_subarray([2,3,-2,4]))
Attempts:
2 left
💡 Hint
Think about how negative numbers affect the product and why we track both max and min products.
✗ Incorrect
The maximum product subarray is [2,3] with product 6. The code tracks max and min products to handle negative numbers correctly.
❓ Predict Output
intermediate2:00remaining
Result of Maximum Product Subarray with Negative Numbers
What is the output of this code for the input array containing negative numbers?
DSA Python
def max_product_subarray(nums): max_prod = min_prod = result = nums[0] for num in nums[1:]: candidates = (num, max_prod * num, min_prod * num) max_prod = max(candidates) min_prod = min(candidates) result = max(result, max_prod) return result print(max_product_subarray([-2,0,-1]))
Attempts:
2 left
💡 Hint
Remember zero resets the product, so consider subarrays around zero.
✗ Incorrect
The maximum product subarray is [0] with product 0. Negative numbers and zero reset the product tracking.
🔧 Debug
advanced2:00remaining
Identify the Error in Maximum Product Subarray Implementation
What error will this code produce when run, and why?
DSA Python
def max_product_subarray(nums): max_prod = min_prod = result = 0 for num in nums: candidates = (num, max_prod * num, min_prod * num) max_prod = max(candidates) min_prod = min(candidates) result = max(result, max_prod) return result print(max_product_subarray([-2]))
Attempts:
2 left
💡 Hint
Check the initial values of max_prod, min_prod, and result.
✗ Incorrect
Initializing max_prod, min_prod, and result to 0 causes incorrect tracking because the first element might be positive and greater than 0, but the code never sets them to the first element's value.
🧠 Conceptual
advanced2:00remaining
Why Track Both Maximum and Minimum Products?
Why does the maximum product subarray algorithm track both the maximum and minimum products at each step?
Attempts:
2 left
💡 Hint
Think about how multiplying two negative numbers affects the product.
✗ Incorrect
Tracking the minimum product is important because multiplying it by a negative number can turn it into a large positive product, which might be the maximum.
🚀 Application
expert3:00remaining
Maximum Product Subarray Length Query
Given the array [1, -2, -3, 0, 7, -8, -2], what is the length of the contiguous subarray with the maximum product?
Attempts:
2 left
💡 Hint
Find the subarray with the maximum product first, then count its length.
✗ Incorrect
The maximum product subarray is [7, -8, -2] with product 112 and length 3. Zero resets the product, so subarrays containing zero are considered separately.