628. Maximum Product of Three Numbers

Description

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.

Solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var maximumProduct = function(nums) {
    "use strict";
    let large = [Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER],
        small = [Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER];
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] > large[0]) {
            large[2] = large[1];
            large[1] = large[0];
            large[0] = nums[i];
        } else if (nums[i] > large[1]) {
            large[2] = large[1];
            large[1] = nums[i];
        } else if (nums[i] > large[2]) {
            large[2] = nums[i];
        }
        if (nums[i] < small[0]) {
            small[1] = small[0];
            small[0] = nums[i];
        } else if (nums[i] < small[1]) {
            small[1] = nums[i];
        }
    }
    return small[0]*small[1] > large[1]*large[2] ? large[0]*small[0]*small[1] : large[0]*large[1]*large[2];
};

results matching ""

    No results matching ""