# LeetCode

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:

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

`class Solution {public:    int maximumProduct(vector<int>& nums) {        int n = nums.size();        int num1 = max(nums[0], max(nums[1], nums[2]));        int num3 = min(nums[0], min(nums[1], nums[2]));        int num2 = nums[0] + nums[1] + nums[2] - num1 - num3;        int mmin1 = num3;        int mmin2 = num2;        for (int i = 3; i < n; ++i) {            if (nums[i] > num1) {                num3 = num2;                num2 = num1;                num1 = nums[i];            }            else if (nums[i] > num2) {                num3 = num2;                num2 = nums[i];            }            else if (nums[i] > num3) {                num3 = nums[i];            }            if (nums[i] < mmin1) {                mmin2 = mmin1;                mmin1 = nums[i];            }            else if (nums[i] < mmin2) {                mmin2 = nums[i];            }        }        int ans = num1 * num2 * num3;        ans = max(ans, num1 * mmin1 * mmin2);        return ans;    }};`

0 0