首页 > 其他 > 详细

【leetcode】三个数的最大乘积

时间:2020-09-20 08:53:54      阅读:106      评论:0      收藏:0      [点我收藏+]

 

/*快排后 取最小两个负数和最大正数乘积和最大三个正数乘积比较取较大值*/
int cmp(const void* a, const void* b){
    return *(int*)a - *(int*)b;
}
int maximumProduct(int* nums, int numsSize){
    qsort(nums,numsSize,sizeof(int),cmp);
    int val1,val2;    
    val1 = nums[0]*nums[1]*nums[numsSize-1];
    val2 = nums[numsSize-1]*nums[numsSize-2]*nums[numsSize-3];    
    return (val1>val2)? val1: val2;
}

 

//线性扫描
int maximumProduct(int* nums, int numsSize){
    int a = -1000;
    int b = -1000;
    int c = -1000;
    int d = 1000;
    int e = 1000;
    for(int i=0 ; i < numsSize ; i++){
        if(nums[i] < d){
            e = d;
            d = nums[i];
        } else if(nums[i] < e){
            e = nums[i];
        }
        if(nums[i] > c){
            a = b;
            b = c;
            c = nums[i];
        } else if(nums[i] > b){
            a = b;
            b = nums[i];
        } else if(nums[i] > a){
            a = nums[i];
        }
    }
    int result1 = a*b*c;
    int result2 = d*e*c;
    if(result1 > result2){
        return result1;
    }
    return result2;
}

 

【leetcode】三个数的最大乘积

原文:https://www.cnblogs.com/ganxiang/p/13698669.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!