当前位置: 首页 > 知识库问答 >
问题:

在未排序数组中查找最大K数

松烨烨
2023-03-14

我试图找到给定排序数组的最大K数。

ex:输入-

到目前为止,我编写的代码返回最大的K元素,但它需要返回最大的K数字。任何帮助都将不胜感激。

public static int max_Numbers(int [] p, int K, int firstNum, int lastNum)
    {
        int pivot = partitionArr(p, firstNum, lastNum);
        int m = p.length - K;
        if (m == pivot)
        {
            return p[pivot];
        }
        if(m > pivot)
        {
            return max_Numbers(p, K, pivot + 1, lastNum);

        }
        else
        {
            return max_Numbers(p, K, firstNum, pivot - 1);
        }
    }

共有2个答案

李锦
2023-03-14

您正在使用的枢轴和分区的一个属性是,在每个分区步骤之后,可以保证枢轴之前的所有元素恰好小于或等于枢轴,并且枢轴之后的所有元素都更大。因此,在您找到第K个枢轴之后,数组将在它之后拥有最大的K。

查修谨
2023-03-14

使用排序数组

for(int i=array.length-1; i>=0 && array.length-1 - i < K; i--) System.out.println(array[i]));
 类似资料:
  • 给定一个未排序的数组,我试图找到最接近数组中位数的 K 个元素。我在线性运行时间内找不到解决方案。 这里的中位数是6。 答案是2,3,4,5,6。 任何帮助或提示将不胜感激。

  • 求一个未排序数组的中值,我们可以对n个元素做O(nlogn)时间的min-heap,然后我们可以逐个抽取n/2个元素得到中值。但是这种方法需要O(nlogn)时间。 我们能在O(n)时间内通过某种方法做同样的事情吗?如果可以,那么请告诉或建议一些方法。

  • 我最近在一次面试中进行了一次编码测试。我被告知: 有一个100万int的大型未排序数组。用户想要检索K个最大的元素。您将实现什么算法? 在这期间,有人强烈暗示我需要对数组进行排序。 所以,如果性能真的很重要,我建议使用内置的或自定义实现。然后我被告知,使用或数组来存储最大和for循环,可以实现大约,事后看来,我认为这是,因为每次迭代都需要与大小的数组进行比较以找到要替换的最小元素,而对数组进行排序

  • 本文向大家介绍寻找一数组中前K个最大的数相关面试题,主要包含被问及寻找一数组中前K个最大的数时的应答技巧和注意事项,需要的朋友参考一下 考察点:数组    

  • 经典的问题陈述是:给定一个未排序的整数数组,找到中不存在的最小正整数。 在一个经典的问题陈述中,你只得到一个数组,你可以在这里、这里和这里找到很多关于这个问题的解决方案和资源。 在我的问题中,你得到了两个数组,和,长度均为。构造一个长度为 的数组 ,其“最小缺失整数”是可能的最大值。 必须是 或 。 我们如何以< code>O(N)的最坏情况时间和空间复杂度解决这个问题? 假设: