前言:
现时我们对“求第k大元素”大约比较着重,大家都想要剖析一些“求第k大元素”的相关内容。那么小编也在网络上网罗了一些关于“求第k大元素””的相关文章,希望你们能喜欢,看官们快快来了解一下吧!面试过程中经常会被问到一些算法问题,所以准备换工作的同学,还是需要准备点基本算法思想的,今天的主题是一个比较常见的算法题,我们来看一下这个算法题有哪些实现的手段。
方式一:对无序数组进行有序化处理,处理完后根据条件获取对应的下标值即可(这个方案是一般有点基础的人都能想到的,这里就不列出代码了)
方式二:方法一的算法在数据量比较大的情况下,效率是个问题,所以我们可以优化一下思路,利用快排的思想进行优化。程序如下:
方式三:利用堆的思想解决这类问题,利用jdk自有的 PriorityQueue 来实现。
/**
* 如何求出无序数组的第K个最大的元素
*
* @param nums
* @param k
* @return
*/
public static int maxK(int[] nums, int k) {
PriorityQueue<Integer> queue = new PriorityQueue<>();
for (int n : nums) {
queue.add(n);
if (queue.size() > k) {
queue.poll();
}
}
return queue.poll();
}
标签: #求第k大元素