java - 如何找到 int[] 中的第 K 个最大差异?

标签 java arrays algorithm time

我有一道算法题。

例如,有一个int[]数组,如[1,5,4,3,7,2]

我想找到这个数组中第 k 个最大的差异,例如:

array[i] - array[j] = kth largest difference

(索引 i 必须小于 j 并且 array[i] 必须大于 array[j])。

输出是返回这个问题中的j

我目前的想法:

  • 我可以构建一个 int[][] 来存储数组中的所有差异。
  • 然后对它们进行排序,找到第 k 个最大的差异。

但是时间复杂度是O(n^2)

有没有更好的解决方案?

最佳答案

您可以运行 2 个单独的方法来查找相应数组的最大值和最小值,然后找出差异。

您可以使用您的方法创建一个新数组,找出每个值的差异,然后找到该数组的最大值并输出。

然后使用 Array sort() 方法对数组重新排序并在 index+1 调用时打印出最大差值

关于java - 如何找到 int[] 中的第 K 个最大差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52096946/

相关文章:

java - 使用java创建impala表并添加数据

java - 在 OpenCV 3.2 中返回 Java 中的 Mat 对象

c# - 获取哪些值使数组中给定数字的总和的算法

arrays - 零一矩阵中零范围的索引

c++ - 如何在 C++ std::set 中放置看起来不可比较的对象?

java - 在 spring boot 中动态更改 application.properties 值

Java 2-D 随机游走仅限于四个方向

对象数组的 C++ 问题

javascript - 这是一个 JSON 数组吗?

algorithm - 红黑树插入