Answer
Find Second Largest Element in an Array
Method 1: Two-Variable Tracking (Most Efficient)
Java
public class SecondLargest {
public static void main(String[] args) {
int arr[] = { 12, 35, 1, 10, 34, 1 };
int largest = Integer.MIN_VALUE;
int secondLargest = Integer.MIN_VALUE;
for (int num : arr) {
if (num > largest) {
secondLargest = largest; // old largest becomes second
largest = num;
} else if (num > secondLargest && num != largest) {
secondLargest = num;
}
}
System.out.println("Largest: " + largest);
System.out.println("Second Largest: " + secondLargest);
}
}
Output
CODE
Largest: 35
Second Largest: 34
Method 2: Sort and Pick (Simple)
Java
import java.util.Arrays;
int arr[] = { 12, 35, 1, 10, 34, 1 };
Arrays.sort(arr); // [1, 1, 10, 12, 34, 35]
// Second largest is at arr.length - 2
System.out.println("Second Largest: " + arr[arr.length - 2]); // → 34
Note: Works only if no duplicates at the top. For unique second largest, traverse from end:
Java
for (int i = arr.length - 2; i >= 0; i--) {
if (arr[i] != arr[arr.length - 1]) {
System.out.println("Second Largest: " + arr[i]);
break;
}
}
Method 3: Using TreeSet (Unique values sorted)
Java
import java.util.TreeSet;
int arr[] = { 12, 35, 1, 10, 34, 1, 35 };
TreeSet<Integer> set = new TreeSet<>();
for (int num : arr) set.add(num); // TreeSet removes duplicates, keeps sorted
// headSet(max) = all elements less than max → last() is second largest
int secondLargest = set.headSet(set.last()).last();
System.out.println("Second Largest: " + secondLargest); // → 34
Automation Testing Relevance
Java
// Find the second highest priced item on a product listing page
List<WebElement> priceElements = driver.findElements(By.css(".product-price"));
int largest = 0, second = 0;
for (WebElement el : priceElements) {
int price = Integer.parseInt(el.getText().replace("$", "").trim());
if (price > largest) { second = largest; largest = price; }
else if (price > second) second = price;
}
System.out.println("Second highest price: $" + second);
