三個數的最大乘積

2021-10-12 19:57:30 字數 1138 閱讀 1774

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

示例 1:

輸入: [1,2,3]

輸出: 6

示例 2:

輸入: [1,2,3,4]

輸出: 24

注意:

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

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

【題解】

方法一:排序

我們將陣列進行公升序排序,如果陣列中所有的元素都是非負數,那麼答案即為最後三個元素的乘積。

如果陣列**現了負數,那麼我們還需要考慮乘積中包含負數的情況,顯然選擇最小的兩個負數和最大的乙個正數是最優的,即為前兩個元素與最後乙個元素的乘積。

上述兩個結果中的較大值就是答案。注意我們可以不用判斷陣列中到底有沒有正數,0 或者負數,因為上述兩個結果實際上已經包含了所有情況,最大值一定在其中。

public

class

solution

}

複雜度分析

時間複雜度:o(nlog⁡n),其中 n 是陣列的長度。

空間複雜度:o(log⁡n),為排序使用的空間。

方法二:線性掃瞄

在方法一中,我們實際上只要求出陣列中最大的三個數以及最小的兩個數,因此我們可以不用排序,用線性掃瞄直接得出這五個數。

public

class

solution

else

if(n <= min2)

if(n >= max1)

else

if(n >= max2)

else

if(n >= max3)

}return math.

max(min1 * min2 * max1, max1 * max2 * max3);}

}

複雜度分析

時間複雜度:o(n)。

空間複雜度:o(1)。

三個數的最大乘積

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

三個數的最大乘積

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

三個數的最大乘積

題目 給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6 示例 2 輸入 1,2,3,4 輸出 24 解題思路1 先對陣列進行排序,然後發現答案有兩種情況,如果有負數那麼最大乘積可能是前兩最小負數乘以最大正數,前三個最大正數乘積,對這三種情況進...