maximum product subarray

其实应该能做出来的,结果有点没沉下心,试了几次发现没过,就去看答案了。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class (object):
def maxProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
# 最大值 是 max 前一个最大值*当前值,前一个最小值*当前值,当前值
# 最小值 是 min 前一个最大值*当前值,前一个最小值*当前值,当前值
# 最大值就是 max 当前最大值, 最大值
cur_max = nums[0]
cur_min = nums[0]
max_value = nums[0]
for i in range(1, len(nums)):
cur_max, cur_min = max(cur_max * nums[i], cur_min * nums[i], nums[i]), min(cur_max * nums[i], cur_min * nums[i], nums[i])
max_value = max(max_value, cur_max)
return max_value