Program to find maximum product of contiguous subarray in Python


Suppose we have an array called nums, we have to find the product of elements of a contiguous subarray within an array (containing at least one number) which has the largest product. So if the array is [1,9,2,0,2,5], the output will be 18, as contiguous subarray [1,9,2] has max product.

To solve this, we will follow these steps −

  • max_list := list of size nums, and fill with 0
  • min_list := list of size nums, and fill with 0
  • min_list := list of size nums, and fill with 0
  • for i in range 1 to length of nums
    • max_list[i] = max of max_list[i - 1]*nums[i], min_list[i - 1]*nums[i] and nums[i]
    • min_list[i] = minof min_list[i - 1]*nums[i], nums[i], max_list[i - 1]*nums[i]
  • return the max of max_list

Let us see the following implementation to get better understanding −

Example

 Live Demo

class Solution(object):
   def maxProduct(self, nums):
      max_list = [0] * len(nums)
      min_list = [0] * len(nums)
      max_list[0] = nums[0]
      min_list[0] = nums[0]
      for i in range(1,len(nums)):
         max_list[i] = max(max(max_list[i-1]*nums[i],min_list[i-1]*nums[i]),nums[i])
         min_list[i] = min(min(min_list[i-1]*nums[i],nums[i]),max_list[i-1]*nums[i])
      return max(max_list)
ob1 = Solution()
print(ob1.maxProduct([1,9,2,0,2,5]))

Input

[1,9,2,0,2,5]

Output

18

Updated on: 20-Oct-2020

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements