【发布时间】:2020-10-18 11:48:42
【问题描述】:
任务是找出数组中最大的三个(三个数字相乘,使它们的乘积最大)。
数组长度最大1.000.000
从 -1.000.000 到 1.000.000 的数字范围
问题:我明白了,首先你需要通过快速排序对数组进行排序,然后我应该在什么条件下选择数字?
例如在序列中:
-17, -12, 1, 3, 4
(-17) * (- 12) * 4 会起作用,即三个最重要的正数相乘会少。
【问题讨论】:
-
顺便说一句,您实际上并不需要对整个数组进行排序来找到三个最大/两个最小的元素。为此,您只需要遍历数组并跟踪两个/三个最大值。这是一个 O(N) 操作。
-
对于较大的列表,可以使用简单的冒泡排序,因为您只需要三次迭代即可将三个最大的数字放在首位。你不关心其他的。比较绝对值
-
默认语言环境,谢谢!