一.题目描述
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。
二.示例
三.算法分析
先利用集合的定义set去掉重复的元素转换成列表,然后判断该列表长度是否大于3,若小于3直接返回最大值,若大于三则先循环去掉该列表中最大的两个元素,再返回的最大的元素则是第三大的元素。
四.算法实现
class Solution(object):
def thirdMax(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
temp = list(set(nums))
if len(temp) < 3:
return max(temp)
else:
for i in range(2):
temp.remove(max(temp))
return max(temp)