628. Maximum Product of Three Numbers

来源:互联网 发布:炒股模拟软件app 编辑:程序博客网 时间:2024/06/07 02:18

  • Maximum Product of Three Numbers
    • Problem
    • Implementation

628. Maximum Product of Three Numbers

Problem

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.

Implementation

class Solution {public:    int maximumProduct(vector<int>& nums) {        int res = 0;        int len = nums.size();        if(len < 3)             return res;        else if(len == 3)            return nums[0]*nums[1]*nums[2];        res = INT_MIN;        sort(nums.begin(), nums.end());        int num_neg = 0;        int num_pos = 0;        bool has_zero = false;        for(int idx = 0; idx < len; idx++) {            if(nums[idx] < 0) {                 num_neg++;            }                else if(nums[idx] > 0) {                num_pos = len - idx;                break;            }                else {                has_zero = true;            }        }        int choice1 = nums[len-1]*nums[len-2]*nums[len-3];        int choice2 = nums[0]*nums[1];        if(!num_neg || num_neg == 1) {            return choice1;        }            else {            return choice2*nums[len-1] > choice1?choice2*nums[len-1]:choice1;        }        // The above can be simplified with          // choice2*nums[len-1] > choice1?choice2*nums[len-1]:choice1;        /* Brute force will cause time exceed        for(int idx1 = 0; idx1 < len - 2; idx1++) {            for(int idx2 = idx1 + 1; idx2 < len - 1; idx2++) {                int inter1 = nums[idx1]*nums[idx2];                for(int idx3 = idx2 + 1; idx3 < len; idx3++) {                    int tmp = inter1*nums[idx3];                    if(tmp > res)                           res = tmp;                  }            }        }        */        return res;    }};
原创粉丝点击