import java.util.List;
import java.util.Arrays;
import java.util.PriorityQueue;
public class MyClass {
public static int findKLargest(List<Integer> lst, int K) {
if (lst == null || lst.size() < K) {
return -1;
}
PriorityQueue<Integer> pq = new PriorityQueue<>(lst.subList(0, K));
for (int i = K; i < lst.size(); i++) {
if (lst.get(i) > pq.peek()) {
pq.poll();
pq.add(lst.get(i));
}
}
return pq.peek();
}
public static void main(String args[]) {
List<Integer> lst = Arrays.asList(100, 88, 98, 80, 50, 12, 35, 70, 60, 97, 85, 89);
int K = 4;
System.out.println(findKLargest(lst, K));
}
}
/*
run:
89
*/