给定一个无序数组,包含正数、负数和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;
}
上一篇: 数组中找到出现次数大于N/K的数
下一篇: 100w个数字,找出最小的10个数字