給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 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個數,比較可能的兩個結果,較大的那個就是我們要返回的。在單次掃瞄中,找出最大的三個數 如果新的數大於...