Я работал над проблемой "максимального подмассива продукта" и столкнулся с проблемой с моим кодом
Способ, которым я решил эту проблему, был
def maxProduct(nums):
minProd = maxProd = maximum = nums[0]
for i in range(1, len(nums)):
currentNum = nums[i]
maxProd = max(currentNum, currentNum*maxProd, currentNum*minProd)
minProd = min(currentNum, currentNum*maxProd, currentNum*minProd)
maximum = max(maximum, maxProd)
return maximum
print(maxProduct([-4, -3, -2]))
Мое решение дало бы мне72, но код, который дал бы правильное решение:
def maxProduct(nums):
minProd = maxProd = maximum = nums[0]
for i in range(1, len(nums)):
currentNum = nums[i]
maxProd, minProd = max(currentNum, currentNum*maxProd, currentNum * minProd), min(currentNum, currentNum*maxProd, currentNum*minProd)
maximum = max(maximum, maxProd)
return maximum
print(maxProduct([-4, -3, -2]))
Мое решение и правильное решение, кажется, делают то же самое.Почему бы
maxProd, minProd = max(currentNum, currentNum*maxProd, currentNum * minProd), min(currentNum, currentNum*maxProd, currentNum*minProd)
против
maxProd = max(currentNum, currentNum*maxProd, currentNum*minProd)
minProd = min(currentNum, currentNum*maxProd, currentNum*minProd)
иметь такую большую разницу?