请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字,如果不存在这样的数字,返回 -1 。java
时间: 2024-03-24 22:39:53 浏览: 182
好的,可以使用以下代码实现:
```java
public static int findNumber(int[] nums) {
if (nums == null || nums.length <= 2) {
return -1; // 数组长度小于等于2或为空,不存在符合条件的数字
}
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int mid = Integer.MAX_VALUE;
for (int num : nums) {
if (num < min) {
mid = min;
min = num;
} else if (num > max) {
mid = max;
max = num;
} else if (num < mid) {
mid = num;
}
}
return mid == Integer.MAX_VALUE || mid == min || mid == max ? -1 : mid;
}
```
其中,我们首先判断数组是否为空或长度是否小于等于2,如果是,则直接返回-1。否则,我们初始化三个变量:最小值、最大值和中间值(初始值为Integer.MAX_VALUE)。然后遍历数组,如果当前数字比最小值还小,则将中间值更新为原来的最小值,最小值更新为当前数字;如果当前数字比最大值还大,则将中间值更新为原来的最大值,最大值更新为当前数字;如果当前数字介于最小值和最大值之间,则将中间值更新为当前数字。最后,我们判断中间值是否为初始值,或者是否等于最小值或最大值,如果是,则说明不存在符合条件的数字,返回-1;否则,返回中间值即可。
需要注意的是,如果数组中有多个相同的数字,我们只返回其中一个即可。
阅读全文