我有一个获取原始数据数组(int
)的函数,我需要返回两个元素组成的数组:最小数和最大数。如果数组的长度为 1,则仅返回数组的前两个元素 int
。我想出了这样的解决方案:
public static int[] minMax(int[] arr) {
if (arr.length==1)
return new int[]{arr[0],arr[0]} ;// return if arr is 1 element
else {
ArrayList<Integer> ar = new ArrayList<Integer>();
//?
return new int[]{Collections.max(ar),Collections.min(ar)};
}
}
但是如何将数组
转换为ArrayList
?也许有更有效的方法吗?
最佳答案
通过调用 Collections.min
和 Collections.max
,您将迭代该数组两次。您可以通过流式传输阵列并让它完成繁重的工作来减少这个时间,如 James Mudd suggested 。但是,请注意,这样做会浪费时间计算总和并累加您不关心的元素计数。自己计算这些可能会更有效:
public static int[] minMax(int[] arr) {
// Assuming arr has at least one element
int min = arr[0];
int max = arr[0];
for (int i = 1; i < arr.length; ++i) {
int curr = arr[i];
if (curr < min) {
min = curr;
} else if (curr > max) {
max = curr;
}
}
return new int[]{min, max};
}
关于java - int 数组到 ArrayList 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73020396/