欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大

程序员文章站 2024-03-15 22:30:24
...

题目描述

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

输入描述

无序整数数组A[n]

输出描述

满足条件的最大乘积

示例1:

示例1
输入
3 4 1 2
输出
24

源代码

#include<vector>
#include<iostream>
#include <algorithm>

using namespace std;

int main()
{
    long long int a;
    long long int max_num;
    int number;
    vector<long long int> num;
    cin>>number;
    for(int i=0;i<number;i++)
    {
        cin>>a;
        num.push_back(a);
    }
    if(num.size()==3)
    {
        cout<<num[0]*num[1]*num[2]<<endl;
    }
    else
    {
        sort(num.begin(),num.end());
        int len=num.size();
        max_num=max(num[len-1]*num[len-2]*num[len-3],num[len-1]*num[0]*num[1]);
        cout<<max_num<<endl; 
    }
    
    return 0;

}