class Solution:
def maxProduct(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
result = nums[0]
for i in range(len(nums)):
accu = 1
for j in range(i, len(nums)):
accu *= nums[j]
result = max(result, accu)
return result
class Solution:
def maxProduct(self, nums: List[int]) -> int:
n = len(nums)
mindp = nums[0]
maxdp = nums[0]
res = nums[0]
for i in range(1, len(nums)):
num = nums[i]
currMin = min(num, mindp*num, maxdp*num)
currMax = max(num, mindp*num, maxdp*num)
mindp = currMin
maxdp = currMax
res = max(maxdp, res)
return res
Python 精簡版,可讀性較差
class Solution:
def maxProduct(self, nums: List[int]) -> int:
n = len(nums)
mindp = nums[0]
maxdp = nums[0]
res = nums[0]
for i in range(1, len(nums)):
num = nums[i]
mindp, maxdp = min(num, mindp*num, maxdp*num), max(num, mindp*num, maxdp*num)
res = max(maxdp, res)
return res