/**
* Find second largest element from a given array
*
* Example:
* Input: {5, 2, 3, 4}
* Output: 4
*
* Tags: Array
*/
class FindSecondLargest {
public static void main(String[] args) {
}
/**
* Second largest element is smaller than max
* When update max, second is also updated
* But if current element is bigger than second max, also update
*/
public int secondLargest(int[] array) {
if (array == null || array.length < 2) return 0;
int max = Math.max(array[0], array[1]);
int sec = Math.min(array[0], array[1]);
for (int i = 2; i < array.length; i++) {
if (array[i] > max) { // max updated
sec = max;
max = array[i];
}
else if (array[i] > sec && array[i] != max) sec = array[i]; // smaller than max
}
return sec;
}
}