主要思想: 利用PriorityQueue维护一个大小为K的有序的窗口,这个PriorityQueue是利用的堆排序。

import java.util.*;

public class Solution {
    public int findKth(int[] a, int n, int K) {
        // write code here
        PriorityQueue<Integer> pq = new PriorityQueue<>((num1, num2)-> num1 - num2);
        for(int i = 0; i < a.length; i++) {
            pq.offer(a[i]);
            if(pq.size() > K) {
                pq.remove();
            }
        }
        return pq.peek();
    }
}