給定一個整型數組,在數組中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:
給定的整型數組長度範圍是[3,104],數組中所有的元素範圍是[-1000, 1000]。
輸入的數組中任意三個數的乘積不會超出32位有符號整數的範圍。
對於
所有數都是正數,取最大的三個。
所有數都是負數,同樣取最大的三個。
對於只有一個負數,肯定也不會選,選最大的三個數。
對於有兩個及以上的負數,判斷最大的數,與最小的兩個負數相乘大,還是與次大的兩個正數相乘大即可。
class Solution {
public int maximumProduct(int[] nums) {
Arrays.sort(nums);
int i = nums[nums.length-1] * nums[nums.length-2] * nums[nums.length-3]; // 全是正數、負數、只有一個負數的情況
int j = nums[nums.length-1] * nums[0] * nums[1]; //對於有兩個或兩個以上負數的情況
return i > j?i:j;
}
}