Kth largest element in an I/P stream
import java.util.*;
public class KthLargestElement {
static PriorityQueue<Integer> pq = new PriorityQueue<>();
public static ArrayList getKthLargest(int arr[], int k) {
ArrayList<Integer> list = new ArrayList<>();
for (int val : arr) { // VAL=ARR[i]
if (pq.size() < k) {
pq.add(val);
System.out.print("_" + " ");
}
if (pq.peek() < val) {
pq.remove();
pq.add(val);
}
if (pq.size() == k) {
list.add(pq.peek());
}
}
return list;
}
public static void main(String[] args) {
ArrayList<Integer> res = new ArrayList<>();
int arr[] = new int[8];
System.out.println("Enter elements:");
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int k = 3;
res = getKthLargest(arr, k);
for (int val : res) {
System.out.print(val + " ");
}
}
}
Comments
Post a Comment