你能帮忙解决这个问题吗?
给定一个正数的int数组,写一个返回的方法int findndMax(int[] array)
最大值。然后,编写另一个名为findMin
的方法来查找最小元素
不比较数组元素(使用findMax
)?
public int findMax(int[] array){
int max = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] > max)
max = array[i];
}
return max;
}
答案 0 :(得分:2)
如果您已编写方法findMax
,则将所有数组元素与 -1 相乘,找到最大值并将答案乘以 -1 。但是无论如何这都没有效率,因为你必须经历所有数组元素,可能两次。
public int findMin(int[] array) {
for (int i = 0; i < array.length; i++)
array[i] *= -1;
int min = -1 * findMax(array);
for (int i = 0; i < array.length; i++)
array[i] *= -1;
return min;
}
如果你想用一个循环来做:
public int findMin(int[] array) {
int[] aux = new int[array.length];
for (int i = 0; i < array.length; i++)
aux[i] = -1 * array[i];
int min = -1 * findMax(aux);
return min;
}