LeetCode 628. Maximum Product of Three Numbers

Given an integer array, find three numbers whose product is maximum and output the maximum product.

Example 1:

Input: [1,2,3]
Output: 6

Example 2:

Input: [1,2,3,4]
Output: 24

Note:

The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
Multiplication of any three numbers in the input won’t exceed the range of 32-bit signed integer.

class Solution {
public:
    static bool cmp(const int& i, const int& j){
        return i>j;
    }
    int maximumProduct(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int size = nums.size() - 1;
        int i;
        for(i = size ; i >=0; i--)
            if(nums[i] < 0)
                break;
        if(i>=0) sort(nums.begin(), nums.begin()+i+1, cmp);
        if(i==size) return nums[0]*nums[1]*nums[2];
        else if(i>=1) return nums[size]*max(nums[size-1]*nums[size-2], nums[i]*nums[i-1]);
        else return nums[size]*nums[size-1]*nums[size-2];
       // return nums[size] * nums[size - 1] * nums[size - 2] >= 0 ? nums[size] * nums[size - 1] * nums[size - 2] : nums[0] * nums[1] * nums[2];
        
    }
};
posted @ 2018-12-06 22:02  A-Little-Nut  阅读(106)  评论(0编辑  收藏  举报