LeetCode 628 三個數的最大乘積 題解

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

示例 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;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章