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:
- 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.
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];
};