leetcode414-第三大的數

給定一個非空數組,返回此數組中第三大的數。若是不存在,則返回數組中最大的數。要求算法時間複雜度必須是O(n)。算法

示例 1:數組

輸入: [3, 2, 1]

輸出: 1

解釋: 第三大的數是 1.

示例 2:ide

輸入: [1, 2]

輸出: 2

解釋: 第三大的數不存在, 因此返回最大的數 2 .

示例 3:spa

輸入: [2, 2, 3, 1]

輸出: 1

解釋: 注意,要求返回第三大的數,是指第三大且惟一出現的數。
存在兩個值爲2的數,它們都排第二。

 
 
碰到重複元素的狀況就要想到set。
 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]
相關文章
相關標籤/搜索