代码改变世界

[LeetCode] 414. Third Maximum Number_Easy

2018-08-20 02:33  Johnson_强生仔仔  阅读(184)  评论(0编辑  收藏  举报

 

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.

思路就是依次判断, ans 分别是最大的, 第二大的, 第三大的, init 为None, 然后如果num在ans里面, 就continue, 否则的话依次判断大于最大的, 第二大的, 第三大的.

Note: 判断是否为None的时候, 如果是int有可能为0, 所以最好用 is None/ is not None 来判断!!!

Code

 class Solution:
    def thirdMax(self, nums):
        ans = [None]*3
        for num in nums:
            if num in ans:continue
            if ans[0] is None or num > ans[0]:
                ans[0], ans[1], ans[2] = num, ans[0], ans[1]
            elif ans[1] is None or num > ans[1]:
                ans[1], ans[2] = num, ans[1]
            elif ans[2] is None or num > ans[2]:
                ans[2] = num
        return ans[2] if ans[2] is not None else ans[0]