给你一个整数数组 nums ,数组由 不同正整数 组成,请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字,如果不存在这样的数字,返回 -1 。
时间: 2024-03-24 14:39:58 浏览: 195
好的,这是一道简单的数组题目。我可以帮你解决。
你可以使用以下代码:
```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。
请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字,如果不存在这样的数字,返回 -1 。java
好的,可以使用以下代码实现:
```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;否则,返回中间值即可。
需要注意的是,如果数组中有多个相同的数字,我们只返回其中一个即可。
阅读全文