Given an integer array nums
, find the contiguous subarray within an array (containing at least one number) which has the largest product.
Example 1:
Input: [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.
Example 2:
Input: [-2,0,-1] Output: 0 Explanation: The result cannot be 2, because [-2,-1] is not a subarray.
class Solution:
def maxProduct(self, nums: List[int]) -> int:
if not nums:
return 0
max_so_far = nums[0]
min_so_far = nums[0]
result = max_so_far
for i in range(1,len(nums)):
curr = nums[i]
temp_value = max(curr,max_so_far*curr,min_so_far*curr)
min_so_far = min(curr,min_so_far*curr,max_so_far*curr)
max_so_far = temp_value
result = max(result,max_so_far)
return result
TC:O(n)
SC:O(1)