Given an integer array, find three numbers whose product is maximum and output the maximum product.
Input: [1,2,3] Output: 6
Input: [1,2,3,4] Output: 24
- 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.
class Solution:
def maximumProduct(self, nums: List[int]) -> int:
nums.sort()
return nums[-1] * max(nums[-2] * nums[-3], nums[0] * nums[1])
class Solution:
def maximumProduct(self, nums: List[int]) -> int:
min1, min2 = 1000, 1000
max1, max2, max3 = -1000, -1000, -1000
for n in nums:
if n <= min1:
min2 = min1
min1 = n
elif n < min2:
min2 = n
if n >= max3:
max1 = max2
max2 = max3
max3 = n
elif n >= max2:
max1 = max2
max2 = n
elif n > max1:
max1 = n
return max3 * max(min1 * min2, max1 * max2)