Java,从数组中查找第 K 个最大值
我接受了Facebook的采访,他们问了我这个问题。
假设您有一个具有 N 个不同值的无序数组
$input = [3,6,2,8,9,4,5]
实现一个查找第 K 个最大值的函数。
EG:如果 K = 0,则返回 9。如果 K = 1,则返回 8。
我所做的就是这种方法。
private static int getMax(Integer[] input, int k)
{
List<Integer> list = Arrays.asList(input);
Set<Integer> set = new TreeSet<Integer>(list);
list = new ArrayList<Integer>(set);
int value = (list.size() - 1) - k;
return list.get(value);
}
我刚刚测试过,根据问题,该方法工作正常。然而,受访人说,作为提示,他建议使用。据我所知,堆的每个子值不应超过根值。因此,在这种情况下,如果我们假设3是根,那么6是它的子级,它的值比根的值更粗糙。我可能错了,但你的想法是什么,它的实现基于什么?in order to make your life complex! lets assume that your array contains millions of numbers then your listing becomes too slow. What you do in this case?min heapmin heap