程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

三个数的最大乘积(三个数相乘最大值)

balukai 2025-05-10 19:56:06 文章精选 7 ℃

题目:

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。


示例:

输入:nums = [1,2,3,4]
输出:24


思路:

如果所有数都是正数,那么乘积最大的三个数是最大的三个正数;

如果所有数都是负数,那么乘积最大的三个数是最大的三个负数;

如果所有数有正有负,那么乘积最大的三个数可能是:1. 最大的正数、两个最小的负数;2. 三个最大的正数

综上:需要计算得出最大的三个数和最小的两个数


代码:

class Solution {
public:
    int maximumProduct(vector<int>& nums) {
        long large[]={LONG_MIN, LONG_MIN, LONG_MIN};
        long small[]={LONG_MAX, LONG_MAX};

        for(auto& val: nums)
        {
            if(val > large[0])
            {
                large[2] = large[1];
                large[1] = large[0];
                large[0] = val;
            }else if(val > large[1])
            {
                large[2] = large[1];
                large[1] = val;
            }else if(val > large[2])
            {
                large[2] = val;
            }
            
            
            if(val < small[0])
            {
                small[1] = small[0];
                small[0] = val;
            }else if(val < small[1])
            {
                small[1] = val;
            }
        }

        return max(large[0]*large[1]*large[2], small[0]*small[1]*large[0]);

    }
};
最近发表
标签列表