使用 EXACTLY 1 流查找数组中元素对的最大差异

elv*_*e14 0 java java-stream

我正在尝试编写一个函数来查找数组(1D)中任意两个元素之间的最大差异。我已经通过多种方式解决了(我在Java中应用)

  1. 2 个嵌套循环(有效,找到差异并取最大值)
  2. 通过1 次循环迭代(有效,在返回它们的差值后找到最小值和最大值:(最大值 - 最小值))
  3. 使用流两次(有效,使用流的 min() 和 max() 函数查找最大值和最小值并返回差值)。

现在的问题是:如何编写一个函数,使用1 个流来计算数组中任意 2 个元素之间的最大差异?

这是我写的最后一篇:

public static int maxDifference(int[] arr) {
    return Arrays.stream(arr).min().orElseThrow(NoSuchElementException::new) -
           Arrays.stream(arr).max().orElseThrow(NoSuchElementException::new);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*oni 5

使用Arrays.stream(arr).summaryStatistics()- 它返回一个IntSummaryStatistics对象,该对象具有最小值和最大值的访问器。