gpt4 book ai didi

python - 三个数的最大乘积

转载 作者:太空狗 更新时间:2023-10-29 21:41:27 24 4
gpt4 key购买 nike

我正在尝试从 leetcode 解决这个问题, 为了方便复制到这里

Given an integer array, find three numbers whose product is maximum and output the maximum product.

Example 1:
Input: [1,2,3]
Output: 6
Example 2:
Input: [1,2,3,4]
Output: 24
Note:
The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
Multiplication of any three numbers in the input won't exceed the range of 32-bit signed integer.

在(未成功)尝试之后,我用谷歌搜索了解决方案,这很有效

class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
ans = pa = pb = pc = None
na = nb = 0x7FFFFFFF
for n in nums:
if n > pa:
pa, pb, pc = n, pa, pb
elif n > pb:
pb, pc = n, pb
elif n > pc:
pc = n
if n < na:
na, nb = n, na
elif n < nb:
nb = n
return max(ans, pa * na * nb, pa * pb * pc)

除了为什么na和nb被赋值为0x7FFFFFFF之外,我理解逻辑。看起来它是 int32 的最大值。有人可以帮我解释这个数字的意义以及为什么在这里使用它吗? (我会用 1001 代替)

最佳答案

在伪代码中,0x7FFFFFFF 将呈现为无穷大(而 None 则呈现为负无穷大)。正确性证明是一个引理,大意是在最大的三个和最小的两个中可以找到乘积最大的三个数。正负无穷大用作最小/最大两个/三个值的标记值,一旦扫描到前三个值,就会很快被实际值替换。

1001 也可以。

关于python - 三个数的最大乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com