给你一个整数数组 nums ,数组由 不同正整数 组成,请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字,如果不存在这样的数字,返回 -1 。 返回所选整数。 请给出Java版代码
时间: 2024-03-24 15:40:39 浏览: 138
好的,以下是Java版代码:
```java
public int findMiddleNumber(int[] nums) {
if (nums == null || nums.length <= 2) {
return -1;
}
int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
int middle = nums[0];
for (int num : nums) {
if (num < min) {
max = min;
min = num;
} else if (num > max) {
max = num;
} else if (num != min && num != max) {
middle = num;
}
}
return middle != min && middle != max ? middle : -1;
}
```
这里我们用了三个变量来保存当前数组中的最小值、次小值和最大值,遍历数组时更新这三个变量的值。最后返回次小值即可。如果不存在这样的数字,则返回 -1。
相关问题
给你一个整数数组 nums ,数组由 不同正整数 组成,请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字,如果不存在这样的数字,返回 -1 。
好的,这是一道简单的数组题目。我可以帮你解决。
你可以使用以下代码:
```python
def findMiddle(nums):
if len(nums) < 3:
return -1
nums.sort()
for i in range(1, len(nums)-1):
if nums[i] != nums[0] and nums[i] != nums[-1]:
return nums[i]
return -1
```
这个函数接收一个整数数组 `nums` 作为输入,返回一个既不是最小值也不是最大值的数字。如果数组中不存在这样的数字,返回 -1。
我们先判断数组长度是否小于3,如果是,那么不存在符合条件的数字,直接返回 -1。
如果数组长度大于等于3,我们对数组进行排序,然后遍历数组中除去第一个和最后一个元素的部分,找到一个既不是最小值也不是最大值的数字,返回即可。如果都没有找到这样的数字,返回 -1。
希望这个函数能够帮助你解决问题。
个整数数组 nums ,数组由 不同正整数 组成,请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字,如果不存在这样的数字,返回 -1 。 返回所选整数。 请给出Java版代码带注释
好的,以下是Java版代码带注释:
```java
public int findMiddleNumber(int[] nums) {
// 若数组为空或长度小于等于2,则不存在符合条件的数字,返回 -1
if (nums == null || nums.length <= 2) {
return -1;
}
// 初始化最小值、次小值和最大值
int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
// 初始化中间值为数组的第一个数
int middle = nums[0];
// 遍历数组,更新最小值、次小值、最大值和中间值
for (int num : nums) {
if (num < min) {
// 更新最小值,并将次小值赋值为原最小值
max = min;
min = num;
} else if (num > max) {
// 更新最大值
max = num;
} else if (num != min && num != max) {
// 如果当前数不是最小值和最大值,则将其赋值为中间值
middle = num;
}
}
// 如果中间值不等于最小值和最大值,则返回中间值,否则返回 -1
return middle != min && middle != max ? middle : -1;
}
```
这里我们用了三个变量来保存当前数组中的最小值、次小值和最大值,遍历数组时更新这三个变量的值。最后返回次小值即可。如果不存在这样的数字,则返回 -1。
阅读全文