题解 | #最大乘积#

最大乘积

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;




}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务