Python O(n) time O(1) beat 99% & explanation included

  • 0
    def maximumProduct(self, nums):
            # find the three largest numbers and the two smallest numbers in one pass.
            max1, max2, max3 = float('-inf'), float('-inf'), float('-inf')
            min1, min2 = float('inf'), float('inf')
            for n in nums:
                if n > max1:
                    max3 = max2
                    max2 = max1
                    max1 = n
                elif n > max2:
                    max3 = max2
                    max2 = n
                elif n > max3:
                    max3 = n
                if n < min1:
                    min2 = min1
                    min1 = n
                elif n < min2:
                    min2 = n
            return max(max1*max2*max3, max1*min1*min2)

Log in to reply

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.