为什么元组拆包可以提供正确的结果,而使用两行却不能?
Why can tuple-unpacking provide a correct result when using two lines doesn't?
我正在处理 "maximum product subarray" 问题,我 运行 遇到了我的代码
的问题
我解决这个问题的方法是
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)
有这么大的不同?
计算第二个值时maxProd
的值是多少?
在第一个例子中,
max(currentNum, currentNum*maxProd, currentNum * minProd), min(currentNum, currentNum*maxProd, currentNum*minProd)
计算后解包赋值
在第二个例子中,新的maxProd
值被计算和赋值,然后用于第二次计算。
我正在处理 "maximum product subarray" 问题,我 运行 遇到了我的代码
的问题我解决这个问题的方法是
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)
有这么大的不同?
计算第二个值时maxProd
的值是多少?
在第一个例子中,
max(currentNum, currentNum*maxProd, currentNum * minProd), min(currentNum, currentNum*maxProd, currentNum*minProd)
计算后解包赋值
在第二个例子中,新的maxProd
值被计算和赋值,然后用于第二次计算。