Given an integer array nums, return the third distinct maximum number in this array. If the third maximum does not exist, return the maximum number.
Input: nums = [3,2,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2.
The third distinct maximum is 1.
Input: nums = [1,2]
Output: 2
Explanation:
The first distinct maximum is 2.
The second distinct maximum is 1.
The third distinct maximum does not exist, so the maximum (2) is returned instead.
Input: nums = [2,2,3,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2 (both 2's are counted together since they have the same value).
The third distinct maximum is 1.
class Solution:
def thirdMax(self, nums: List[int]) -> int:
nums = set(nums)
if len(nums) < 3:
return max(nums)
else:
nums.remove(max(nums))
nums.remove(max(nums))
return max(nums)
class Solution:
def thirdMax(self, nums: List[int]) -> int:
if len(set(nums)) < 3:
return max(nums)
first, second, third = float('-inf'), float('-inf'), float('-inf')
for num in nums:
if num > first:
first, second, third = num, first, second
elif first > num > second:
second, third = num, second
elif second > num > third:
third = num
return third


-> if I don't use a set it's Space Complexity will be O(1).