Maximum Product Subarray
Array Math/Dynamic Programming
Problem
Given an integer array nums
, find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example:
Thought Process
We can apply dynamic programming to this problem. Remember for a problem to be classified as dynamic programming it must have: optimal substructure and overlapping problems
At each index, we will record the local minimum and the local maximum
We need to record the local minimum for the case where we come across a negative element and need to multiply it by the largest negative number
For the case where the current element is negative, the local minimum will be between that current element or (current element x previous local maximum).
Solution
Key Facts
This is a DP problem where the optimal solution to the whole problem contains optimal solution to the subproblems
Here the optimal solution to subproblems is the local minimum
We are storing the local minimum and local maximum for each subproblem
We need to record the local minimum because for the case when we come across a negative number, multiplying these two negative numbers together will result in a large positive number
Time Complexity
Time:
Space:
Last updated
Was this helpful?