DDSA Solutions

Second Largest

Time: O(n)
Space: O(1)
Advertisement

Intuition

Find second largest element in array without sorting. Single pass tracking max and second max.

Algorithm

  1. 1max1 = max2 = INT_MIN. For each num: if num > max1: max2=max1, max1=num. Else if num > max2 and num != max1: max2=num.

Common Pitfalls

  • Handle duplicates: second largest must be strictly less than largest. Return -1 if no second largest exists.
Second Largest.java
Java
// Approach: Single pass tracking the largest and second largest distinct values.
// Time: O(n) Space: O(1)
class Solution {
    public int getSecondLargest(int[] arr) {
        int l = arr[0];
        int sl = -1;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > l) {
                sl = l;
                l = arr[i];
            } else if (arr[i] < l && arr[i] > sl) {
                sl = arr[i];
            }
        }
        return sl;
    }
}
Advertisement
Was this solution helpful?