Problem #
Given an array of positive numbers. Find the second largest number from the array. If the second largest number doesn't exist then return -1.
Examples #
[12, 35, 1, 10, 34, 1]➜34[10, 5, 10]➜5[10, 10, 10]➜-1The largest is 10 and the second largest does not exist.
Constraints #
2 ≤ arr.size() ≤ 10⁵1 ≤ arr[i] ≤ 10⁵
Expected Complexities #
Time Complexity:
Auxiliary Space:
Solution #
Numeric = int | float
def find_second_largest_number(arr: list[Numeric]) -> Numeric:
n: int = len(arr)
largest: Numeric = -1
second_largest: Numeric = -1
for i in range(n):
if largest < arr[i]:
second_largest = largest
largest = arr[i]
elif second_largest < arr[i] < largest:
second_largest = arr[i]
return second_largest
print(find_second_largest_number([12, 35, 1, 10, 34, 1]))
print(find_second_largest_number([10, 5, 10]))
print(find_second_largest_number([10, 10, 10]))