解题思路:
这道问题,是我自己做出来的,也没有听讲解,看答案之类的。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(); } }