Find Second Largest Number #

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] -1

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

Constraints #

  • 2 ≤ arr.size() ≤ 10⁵

  • 1 ≤ arr[i] ≤ 10⁵

Expected Complexities #

  • Time Complexity: O(n)O(n)

  • Auxiliary Space: O(1)O(1)

Solution #

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