LeetCode #414: Third Maximum Number

来源:互联网 发布:三只眼 漫画 知乎 编辑:程序博客网 时间:2024/05/01 14:42

Problem Statement

(Source) 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: 1Explanation: The third maximum is 1.

Example 2:

Input: [1, 2]Output: 2Explanation: The third maximum does not exist, so the maximum (2) is returned instead.

Example 3:

Input: [2, 2, 3, 1]Output: 1Explanation: Note that the third maximum here means the third maximum distinct number.Both numbers with value 2 are both considered as second maximum.

Solution

Keep three variables to record the biggest three (if exists) numbers. The time complexity is O(n), and space complexity is O(1).

class Solution(object):    def thirdMax(self, nums):        """        :type nums: List[int]        :rtype: int        """        first, second, third = None, None, None        for i in xrange(len(nums)):            if first == None:                first = nums[i]            elif second == None:                if nums[i] != first:                    first, second = sorted([first, nums[i]], reverse=True)            elif third == None:                if nums[i] not in (first, second):                    first, second, third = sorted([first, second, nums[i]], reverse=True)            else:                if nums[i] not in (first, second, third):                    first, second, third = sorted([first, second, third, nums[i]], reverse=True)[:3]        return first if third == None else third
0 0
原创粉丝点击