给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
示例 1:
输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。
示例 2:
输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:
输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指第三大且唯一出现的数。
存在两个值为2的数,它们都排第二。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/third-maximum-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
from typing import List
class Solution:
def thirdMax(self, nums: List[int]) -> int:
a=b=c=-2**31-1
n=len(nums)
if n==1:
return nums[0]
if n==2:
return max(nums[0],nums[1])
for x in nums:
if x>a:
if c!=b:c=b
if b!=a:b=a
a=x
elif x!=a and x>b:
if c!=b:c=b
b=x
elif x!=b and x!=a and x>c:
c=x
if c==-2**31-1 :
return a
return c