0

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

例如:输入 -> [5, 12, 45, 32, 9, 20, 15] 输出 -> K = 3, [45, 32, 20]

到目前为止,我编写的代码返回了最大的 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);
        }
    }
4

2 回答 2

0

使用您的排序数组,

for(int i=array.length-1; i>=0 && array.length-1 - i < K; i--) System.out.println(array[i]));
于 2019-03-17T04:28:33.997 回答
0

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

于 2019-03-17T08:03:15.430 回答