刷牛客真题,求一个输入无序数组中,三个元素乘积的最大值。
分析:
首先将数组进行排序,这时最大的乘积会是在五个元素之间进行选择(最小,次小,最大,次大,第三大),最大乘积会出现(最小,次小,最大)和(最大,次大,第三大)两个结果之间。
问题:
1、输入方法;
2、排序sort;
附上C++代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
int N,i;
while(scanf("%d",&N)!=EOF){
vector<long long> d(N);
for(i=0;i<N;i++) scanf("%lld",&d[i]);
sort(d.begin(),d.end());
printf("%lld\n",max(d[0]*d[1]*d[N-1],d[N-1]*d[N-2]*d[N-3]));
}
}
附上python代码:
length, arr = input(), sorted(map(int, input().split()))
print(max(arr[-1] * arr[-2] * arr[-3], arr[0] * arr[1] * arr[-1]))