LeetCode_628_数组_三个数的最大乘积

Posted 軒邈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode_628_数组_三个数的最大乘积相关的知识,希望对你有一定的参考价值。

原创:

/* 
    解题思路:
        1.进行排序,由414题目第三大的数得到启示,使用冒泡排序,降序;
        2.然后前三个值最大相乘。
    解决提交超时问题:
        1.冒泡排序更换成快排;
*/

int iQsortVal(const void *a, const void *b)

    return (*(int*)b - *(int*)a);


int maximumProduct(int* nums, int numsSize)

    // int iTampVal; /* 排序临时变量 */

    // for(int i = 0; i < numsSize; i ++)
    // 
    //     for(int j = i + 1; j < numsSize; j ++)
    //     
    //         if(nums[i] < nums[j])
    //         
    //             iTampVal = nums[i];
    //             nums[i]  = nums[j];
    //             nums[j]  = iTampVal;
    //         
    //     
    // 

    qsort(nums, numsSize, sizeof(nums[0]), iQsortVal);

    if(numsSize <= 3 && numsSize > 0)
    
        switch(numsSize)
        
            case 1: return nums[0]; break;
            case 2: return nums[0]*nums[1]; break;
            case 3: return nums[0]*nums[1]*nums[2]; break;
            default: break;
        
    
    else 
    
        return (int)fmax(nums[0]*nums[1]*nums[2], nums[numsSize - 2]*nums[numsSize - 1]*nums[0]);
    

    return 0;


理解:

关于快速排序(qsort)请点击链接: 快排

总结:

只有不停的去熟练,才可以得心应手!

以上是关于LeetCode_628_数组_三个数的最大乘积的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 628.三个数的最大乘积

LeetCode 628. 三个数的最大乘积

[LeetCode] 628. 三个数的最大乘积 ☆

628. 三个数的最大乘积『简单』

LeetCode 628. Maximum Product of Three Numbers三个数的最大乘积 (C++)

数组628. 三个数的最大乘积