var maximumProduct = function(nums) {
if (nums.length === 3) return nums[0] * nums[1] * nums[2];
var po = [];
var ne = [];
nums.sort((x, y) => Math.abs(y) - Math.abs(x));
for (var i = 0; i < nums.length; i++) {
if (nums[i] >= 0) {
po.push(nums[i])
} else {
ne.push(nums[i])
}
if (po.length > 2 && ne.length >= 2)
break;
}
//console.log(po, ne);
if (po.length > 2 && ne.length >= 2) {
return Math.max(po[0] * po[1] * po[2], ne[0] * ne[1] * po[0])
} else {
if (po.length <= 2 && ne.length >= 2) {
return po.length > 0 ? ne[0] * ne[1] * po[0] : ne[ne.length - 1] * ne[ne.length - 2] * ne[ne.length - 3]
} else if (ne.length < 2) {
return po[0] * po[1] * po[2]
}
}
//return po[0] * po[1] * po[2]
};
console.log(maximumProduct([-1, -10, -9, -2, -4, -5]));
console.log(maximumProduct([1, 10, 9, 2, 4, 5]));
console.log(maximumProduct([1, 10, 9]));
console.log(maximumProduct([1, 10, 9, 2, 4, 5]));
console.log(maximumProduct([-1, 10, 9, 2, 4, 5]));
console.log(maximumProduct([-1, -10, -9, -2, -4, 5]));
console.log(maximumProduct([1, 10, -9, -2]));
console