152 乘积最大数组
第一次遇到这种最大最小题目。一起的起因都是因为可能存在负数,让最小值变成最大值。
解决办法是让负数出现时,最大值与最小值进行交换
class Solution(object):
def maxProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return
max_size = 1
min_size = 1
ans = float('-inf')
for i in range(len(nums)):
if nums[i]<0:
min_size, max_size = max_size, min_size
max_size = max(nums[i], max_size*nums[i])
min_size = min(nums[i], min_size*nums[i])
ans = max(ans, max_size)
return ans