給定一個非空數組,返回此數組中第三大的數。若是不存在,則返回數組中最大的數。要求算法時間複雜度必須是O(n)。算法
示例 1:數組
輸入: [3, 2, 1] 輸出: 1 解釋: 第三大的數是 1.
示例 2:ide
輸入: [1, 2] 輸出: 2 解釋: 第三大的數不存在, 因此返回最大的數 2 .
示例 3:spa
輸入: [2, 2, 3, 1] 輸出: 1 解釋: 注意,要求返回第三大的數,是指第三大且惟一出現的數。 存在兩個值爲2的數,它們都排第二。
1 class Solution: 2 def thirdMax(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """ 7 # 用set去除重複元素,可是set不支持下標操做,因此再轉成list 8 # 這裏直接賦給nums,不用再定義一個變量 9 nums = list(set(nums)) 10 nums.sort() 11 # 若是集合長度小於3,直接返回最大元素 12 if len(nums) < 3: 13 return max(nums) 14 else: 15 return nums[-3]