Leetcode 628 三個數的最大乘積

2021-08-31 07:05:44 字數 710 閱讀 5443

給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。

示例 1:

輸入:[1,2,3]輸出:6
示例 2:

輸入:[1,2,3,4]輸出:24
注意:

給定的整型陣列長度範圍是[3,10^4],陣列中所有的元素範圍是[-1000, 1000]。

輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。

一開始看到題目肯定會想著排序一下陣列,然後輸出最大的三個數的乘積,但是仔細一想你就會發現,這個做法不僅會超時還會出現錯誤。當然,快排能夠解決超時問題,但是陣列中的數不僅有正數還有負數。所以最大乘積還有可能是最小的兩個負數與最大的正數的乘積。sort函式的使用大家都知道,下面我給出不需排序的做法。

**如下:

int maximumproduct(int* nums, int numssize) 

else if(min2>nums[i])

}int a=max1*max2*max3;

int b=max1*min1*min2;

return a>b?a:b;

}

Leetcode 628 三個數的最大乘積

給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6 示例 2 輸入 1,2,3,4 輸出 24 注意 1.給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 2.輸入的陣列中任意三個數的乘積不會超出32位有符號整數...

LeetCode628 三個數的最大乘積

給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。解析...

LeetCode 628 三個數的最大乘積

給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。可能組成最大乘積的三個數有兩種可能。可能一 最大的三個正數的乘積 可能二 最大的正數與最小的兩個負數的乘積。因此遍歷陣列,找出這5個數,比較可能的兩個結果,較大的那個就是我們要返回的。在單次掃瞄中,找出最大的三個數 如果新的數大於...