給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:
給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。
輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。
解析:該題目中既有正數又有負數,所以有不同的結果。1、全部為負數,此時取最大的三個負數的乘積最大。2、全部為整數,和1中的情況一樣。3、既有正數又有負數,則取三個正數的乘積和兩個最小的負數和乙個最大的正數乘積較大的那個。
通過上述分析,一共有三種可能,其實三種可能可以化為一種可能,就是不管哪種情況,結果都是三個最大數的乘積和乙個最大數和兩個最小數乘積中較大的那個。因此該題目最重要的就是找出最大的三個數和最小的兩個數。一種方法是排序,另一種方法是遍歷陣列,查詢所需要的數字。
排序**:
int maximumproduct(vector& nums)
int maximumproduct(vector& nums)
else if( i > smax )
else if( i > tmax )
tmax = i;
if( i < fmin )
else if( i < smin )
smin = i;
}return max( fmax*smax*tmax, fmax*fmin*smin );
}
Leetcode 628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6 示例 2 輸入 1,2,3,4 輸出 24 注意 1.給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 2.輸入的陣列中任意三個數的乘積不會超出32位有符號整數...
Leetcode 628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,10 4 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。一...
LeetCode 628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。可能組成最大乘積的三個數有兩種可能。可能一 最大的三個正數的乘積 可能二 最大的正數與最小的兩個負數的乘積。因此遍歷陣列,找出這5個數,比較可能的兩個結果,較大的那個就是我們要返回的。在單次掃瞄中,找出最大的三個數 如果新的數大於...