为什么tupleunpacking在使用两行代码时不能提供正确的结果?

2024-10-03 17:22:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理“最大乘积子数组”问题,我的代码遇到了一个问题

我解决这个问题的方法是

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)

有这么大的不同吗?你知道吗


Tags: 代码inforlenreturndefrangemin
1条回答
网友
1楼 · 发布于 2024-10-03 17:22:54

计算第二个值时,maxProd的值是多少?你知道吗

在第一个例子中

max(currentNum, currentNum*maxProd, currentNum * minProd), min(currentNum, currentNum*maxProd, currentNum*minProd)

计算,然后拆包和分配。你知道吗

在第二个示例中,计算并赋值新的maxProd值,然后在第二个计算中使用。你知道吗

相关问题 更多 >