628 找出数组中乘积最大的三个数
【题目】
【分析】 如果全为正数,那肯定就是最大的三个乘积最大。 现在有正数有负数。可能是最大的三个正数乘积最大,可能是2个最下的负数再乘以最大的正数的值最大。
可以先对数组排序,然后得出结果: 但是这样速度有点慢:
因为我们只想知道最大的三个数和最小的两个数,其他的数不关心。
所以,我们的做法是: 维护5个变量。max1,max2,max3,min1,min2,分别是最大的数,次大的数,第三大的数,最小的数,次小的数。
【代码】
【结果】
|