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