从数组中找三个数,使得乘积最大,用排序方法做,用python来实现
时间: 2023-08-15 07:03:25 浏览: 151
python 实现三数排序
5星 · 资源好评率100%
可以使用排序方法来解决这个问题。首先,对给定的数组进行排序。然后,考虑两种情况:数组中的所有数都是非负数,或者数组中有负数。如果数组中的所有数都是非负数,则最大的三个数的乘积即为结果。如果数组中有负数,则最大的三个数的乘积可能是前两个负数与最后一个正数的乘积,或者是最后三个正数的乘积。比较这两种情况的结果,取较大值即可。
下面是用Python实现这个算法的代码:
```python
def maximum_product(nums):
nums.sort()
n = len(nums)
return max(nums[0] * nums[1] * nums[n-1], nums[n-3] * nums[n-2] * nums[n-1])
# 测试
nums = [1, 2, 3, 4, 5]
print(maximum_product(nums)) # 输出: 60
nums = [-1, -2, -3, 4, 5]
print(maximum_product(nums)) # 输出: 60
nums = [-1, -2, -3, -4, -5]
print(maximum_product(nums)) # 输出: -6
```
这段代码首先对数组进行排序,然后根据情况计算最大乘积并返回结果。在第一个测试用例中,数组为 `[1, 2, 3, 4, 5]`,排序后为 `[1, 2, 3, 4, 5]`,最大乘积为 `5 * 4 * 3 = 60`。在第二个测试用例中,数组为 `[-1, -2, -3, 4, 5]`,排序后为 `[-3, -2, -1, 4, 5]`,最大乘积为 `(-3) * (-2) * 5 = 60`。在第三个测试用例中,数组为 `[-1, -2, -3, -4, -5]`,排序后为 `[-5, -4, -3, -2, -1]`,最大乘积为 `(-5) * (-4) * (-1) = -6`。
阅读全文