給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:
給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。
輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。
如果陣列中都是非負元素,那麼需要取得三個數就是陣列中三個最大的數,
如果陣列出現了乙個負數,則取法與第一種情況相同
如果陣列中有兩個以上得負數和正數,則需要判斷取三個最大得正數和取兩個絕對值最大的負數和乙個最大得正數哪種情況乘積最大
如果只有乙個正數則取取兩個絕對值最大得負數和乙個正數
如果全為負數則取三個絕對值最小的負數(陣列中三個最大的數)
綜上只需要判斷取兩個最小的數和乙個最大的數與取三個最大的數,這兩種情況的乘積哪個大
public
class
solution
}
上述方法只需要知道陣列中兩個最小值,和三個最大值因此可以使用線性掃瞄。
class
solution
else
if(num > max2)
else
if(num > max3)
if(num < min1)
else
if(num < min2)
}return math.
max(min1 * min2 * max1, max1 * max2 * max3);}
}
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位有符號整數的範圍。一...
LeetCode628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。解析...