在许多数组中,我需要长度直到最大值,而不用排序和
{6,8,2,7,10,3,1}
是否可以返回最大-第一个最小值是该数组(10-2=8)?
发布于 2016-09-27 22:10:53
它的一个简单解决方案是函数Array.short,您可以这样做:
/*Code not tested*/
Arrays.sort(array);
System.out.println(array[0]); //min value
System.out.println(array[array.length-1]); //max value
您可以在这里看到有关此函数的更多信息:Java:排序数组
编辑
如果你不能排序,你可以在这里使用一个算法,一个很好的例子http://www.java2novice.com/java-sorting-algorithms/bubble-sort/
发布于 2016-09-27 22:27:29
最简单的代码使用IntStream#summaryStatistics()
IntSummaryStatistics stats = IntStream.of(intArray).summaryStatistics();
int maxDiff = stats.getMax() - stats.getMin();
该方法具有O(n)时间复杂度,比O(n log )排序数组的时间复杂度好。
有一些更快的O(n)算法只计算最大差,但是这种方法在大多数情况下可能已经足够好了。
https://stackoverflow.com/questions/39735002
复制相似问题