mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 12:16:14 -04:00
46 lines
1.0 KiB
Python
46 lines
1.0 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
# author: bt3gl
|
|
|
|
'''
|
|
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.
|
|
|
|
Do it O(n).
|
|
'''
|
|
|
|
import math
|
|
|
|
|
|
def third_max(nums: list[int]) -> int:
|
|
|
|
first_max = -math.inf
|
|
second_max = -math.inf
|
|
third_max = -math.inf
|
|
|
|
for n in nums:
|
|
|
|
if n == first_max or n == second_max or n == third_max:
|
|
continue
|
|
elif n > first_max:
|
|
third_max = second_max
|
|
second_max = first_max
|
|
first_max = n
|
|
elif n > second_max:
|
|
third_max = second_max
|
|
second_max = n
|
|
elif n > third_max:
|
|
third_max = n
|
|
|
|
if third_max == -math.inf:
|
|
third_max = max(second_max, first_max)
|
|
|
|
return third_max
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
nums = [3,2,1]
|
|
assert(third_max(nums) == 1)
|