- Maximum Product Subarray Medium
4143
156
Add to List
Share 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. Accepted
思路:因为有负数存在,所以必须存 imax,imin for循环数组 1.nums[i]为正时,imax=max(imaxnums[i],nums[i]) imin=min(iminnums[i],nums[i]) 2.nums[i]为负时,临时变量tm=imax先存一下 imax=max(iminnums[i],nums[i]) imin=min(tmnums[i],nums[i]) res=max(res,imax)
代码:python3
class Solution:
def maxProduct(self, nums: List[int]) -> int:
imax=nums[0]
imin=nums[0]
res=nums[0]
for i in range(1,len(nums)):
if nums[i]>0:
imax=max(imax*nums[i],nums[i])
imin=min(imin*nums[i],nums[i])
else:
t=imax
imax=max(imin*nums[i],nums[i])
imin=min(t*nums[i],nums[i])
res=max(res,imax)
return res
时间复杂度:O(m) 空间复杂度:O(1)