628 找出数组中乘积最大的三个数

                                                                                                                                              点击此处返回总目录

 

 

【题目】

628 找出数组中乘积最大的三个数

 

 

【分析】

如果全为正数,那肯定就是最大的三个乘积最大。

现在有正数有负数。可能是最大的三个正数乘积最大,可能是2个最下的负数再乘以最大的正数的值最大。

 

可以先对数组排序,然后得出结果:

628 找出数组中乘积最大的三个数

但是这样速度有点慢:

628 找出数组中乘积最大的三个数

 

因为我们只想知道最大的三个数和最小的两个数,其他的数不关心。

 

所以,我们的做法是:

维护5个变量。max1,max2,max3,min1,min2,分别是最大的数,次大的数,第三大的数,最小的数,次小的数。

 

【代码】

628 找出数组中乘积最大的三个数

 

【结果】

628 找出数组中乘积最大的三个数