Basically I need to find the 2nd maximum number in a array.
Suppose the size of the array is 5 and elements are user-inputed.
Here's my solution:
class Main {
public static void main(String[] args) {
int q = 0;
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0; i < 5; i++) {
arr[i] = sc.nextInt();
}
System.out.println(getSecondLargest(arr, 5));
}
public static int getSecondLargest(int[] a, int total) {
int temp;
for (int i = 0; i < total; i++) {
for (int j = i + 1; j < total; j++) {
if (a[i] == a[j]) {
return a[i];
}
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a[total - 2];
}
}
Everything works but it fails when the input has the multiple duplicates values of the maximum number. For eg - 5 5 5 4 3 it needs to give 4 as output but it returns 5 as output.
I also tried to simplify code since size is already mentioned:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int q = 0;
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0; i < 5; i++) {
arr[i] = sc.nextInt();
}
print2largest(arr, 5);
}
static void print2largest(int arr[], 5) {
Arrays.sort(arr);
System.out.println(arr[3]);
}
}
But for the above simplified code to work perfectly no duplicate values must be present in the array.
How to get 2nd maximum element in case of there are multiple duplicate values.