Second largest element in an array GFG

 package com.company;


public class Array3 {
//Efficient solution
public static int second(int[] arr, int n) {
int res = -1;
int largest = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > arr[largest]) {
res = largest;
largest = i;
} else if (arr[i] != arr[largest]) {
if (res == -1 || arr[i] > arr[res]) {
res = i;
}
}
}
return res;
}
// Naive solution

private static int firstLargest(int[] arr) {
int res = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] > arr[res]) {
res = i;
}
}
return res;
}

// Finding the index of second-largest number
// This solution is valid when there is no repetition of element in array MY SOLUTION
public static int getSecondLargest(int[] arr) {
int res = -1;
int a = firstLargest(arr);
for (int i = 0; i < arr.length; i++) {
if (arr[i] != arr[a]) {
if (res == -1) {
res = i;
} else if (arr[i] > arr[res]) {
res = i;
}
}
}
return res;
}

public static void main(String[] args) {
int[] array = {1, 1, 1};
System.out.println(second(array,3));
}
}

Comments