class Solution:
def thirdMax(self, nums: List[int]) -> int:
n=len(nums)
mx=max(nums)
mn=min(nums)
third_mx=0
#表示第几个大的数
flag=0
#逆序检验在不在nums数组里面
for i in range(mx,mn-1,-1):
if i in nums:
flag+=1
if flag==3:
return i
return mx
可惜超时,因为遍历了很多次,时间复杂度太高
所以考虑去掉逆序检验
class Solution:
def thirdMax(self, nums: List[int]) -> int:
first_mx=second_mx=third_mx=float('-inf')
for i in nums:
#原本2 3 5 ,来了个7
#不取等号就过滤掉相同的数了
if i>first_mx:
third_mx=second_mx
second_mx=first_mx
first_mx=i
elif second_mx<i<first_mx:
third_mx=second_mx
second_mx=i
elif third_mx<i<second_mx:
third_mx=i
#这个判断是解决没有第三大数的情况
if third_mx!=float('-inf'):
return third_mx
return first_mx
next one