Third Maximum Number

Question

Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).

Example 1:

Input: [3, 2, 1]

Output: 1

Explanation: The third maximum is 1.

Example 2:

Input: [1, 2]

Output: 2

Explanation: The third maximum does not exist, so the maximum (2) is returned instead.

Example 3:

Input: [2, 2, 3, 1]

Output: 1

Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.

Tags

  • Array

Thought

Use a small array (maxList) to store the maximum number in the array.

Code

class Solution(object):
    def thirdMax(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        maxList = []
        for num in nums:
            if num in maxList:
                continue
            if len(maxList) == 0 or num > maxList[0]:
                maxList.insert(0, num)
            elif len(maxList) == 1 or maxList[0] > num > maxList[1]:
                maxList.insert(1, num)
            elif len(maxList) == 2 or maxList[1] > num > maxList[2]:
                maxList.insert(2, num)
            maxList[:] = maxList[:3]
        if len(maxList) < 3:
            return maxList[0]
        else:
            return maxList[2]

results matching ""

    No results matching ""