[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]