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.
class Solution:
     def maximumProduct(self, nums):
         """
         :type nums: List[int]
         :rtype: int
         """
         h, m, l = -float('inf'), -float('inf'), -float('inf')
         lowest, second_lowest = float('inf'), float('inf')
         
         for num in nums:
             if num > h:
                 l = m
                 m = h
                 h= num
             elif num > m:
                 l = m
                 m = num
             elif num > l:
                 l = num
                 
             if num < lowest:
                 second_lowest = lowest
                 lowest = num
             elif num < second_lowest:
                 second_lowest = num
                 
         return max(h*m*l, h*lowest*second_lowest)
class Solution:
     def maximumProduct(self, nums):
         """
         :type nums: List[int]
         :rtype: int
         """
         h, m, l = -float('inf'), -float('inf'), -float('inf')
         lowest, second_lowest = float('inf'), float('inf')
         
         for num in nums:
             if num > h:
                 l = m
                 m = h
                 h= num
             elif num > m:
                 l = m
                 m = num
             elif num > l:
                 l = num
                 
             if num < lowest:
                 second_lowest = lowest
                 lowest = num
             elif num < second_lowest:
                 second_lowest = num
                 
         return max(h*m*l, h*lowest*second_lowest)