题解 | #最大乘积#
最大乘积
https://www.nowcoder.com/practice/5f29c72b1ae14d92b9c3fa03a037ac5f
思路很简单: 乘积最大的三个数的组合方式
- (1)三个正数(排序后最大的三个值)
- (2)两个负数加要给整数(排序后前两个数加最后一个数)
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n;
std::cin>>n;
vector<int> vec;
int num;
for(int i=0;i<n;++i){
std::cin>>num;
vec.push_back(num);
}
// 排序
sort(vec.begin(),vec.end());
// 三个正数,两个负数一个正数
long long temp1 = vec[0]*vec[1]*vec[vec.size()-1];
long long temp2 = vec[vec.size()-1]*vec[vec.size()-2]*vec[vec.size()-3];
std::cout<<max(temp1,temp2)<<std::endl;
return 0;
}
// 64 位输出请用 printf("%lld")