解题思路:

这道问题,是我自己做出来的,也没有听讲解,看答案之类的。well done~!

本质上,就是利用最小堆,放数组前对大堆K个值,

解题步骤:

1、定义最小堆,放入数组前K个值

2、遍历数组剩下的n-1-k个值,与最小堆的堆顶比较,留下数组最大的值!

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a int整型一维数组
     * @param n int整型
     * @param K int整型
     * @return int整型
     */
    public int findKth (int[] a, int n, int K) {
        PriorityQueue<Integer> max = new PriorityQueue<Integer>();
        for(int i=0; i<K; i++) {
            max.offer(a[i]);
        }

        for(int i=K; i<n; i++) {
            if(max.peek()<a[i]) {
                max.poll();
                max.offer(a[i]);
            }
        }
        return max.peek();
    }
}