当前位置 博文首页 > liupc的学习笔记:628 找出数组中乘积最大的三个数

    liupc的学习笔记:628 找出数组中乘积最大的三个数

    作者:[db:作者] 时间:2021-09-03 15:15

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??点击此处返回总目录

    ?

    ?

    【题目】

    ?

    ?

    【分析】

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

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

    ?

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

    但是这样速度有点慢:

    ?

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

    ?

    所以,我们的做法是:

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

    ?

    【代码】

    ?

    【结果】

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    cs