题解 | #最大乘积#
最大乘积
https://www.nowcoder.com/practice/5f29c72b1ae14d92b9c3fa03a037ac5f
#include <stdio.h>
#include<malloc.h>
/*
最大值只有两种情况
最大的三个正数的乘积
最小的两个负数*最大的正数的乘积
*/
int main() {
int n, i;
scanf("%d", &n);
long min1 = 1, min2 = 1;
long max1 = 1, max2 = 1, max3 = 1;
long value, max_product = -1;
for (i = 0; i < n; i++) {
scanf("%ld", &value);
if (value > max1) {
max3 = max2;
max2 = max1;
max1 = value;
} else if (value > max2) {
max3 = max2;
max2 = value;
} else if (value > max3)max3 = value;
else if (value < min1) {
min2 = min1;
min1 = value;
} else if (value < min2)min2 = value;
}
if (max2 + max3 > -min1 - min2)max_product = max1 * max2 * max3;
else max_product = min1 * min2 * max1;
printf("%ld\n", max_product);
return 0;
}

