Find Second Largest Number

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.

  • [12, 35, 1, 10, 34, 1] ➜ 34

  • [10, 5, 10] ➜ 5

  • [10, 10, 10] ➜ -1

    • The largest is 10 and the second largest does not exist.

  • 2≤Array Size≤1052 \le \text{Array Size} \le 10^5

  • 1≤Array Element≤1051 \le \text{Array Element} \le 10^5

  • Time Complexity: O(n)\mathcal{O}(n)

  • Auxiliary Space: O(1)\mathcal{O}(1)

Python
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]))