如何找出数组中既非最大值也非最小值的元素?代码语法错误求助
问题分析与代码修正
原代码存在的问题
- 错误使用
input(nums):函数参数nums是传入的目标数组,不需要用input读取,直接遍历nums即可。 a = int()无意义:这行仅创建了一个值为0的整数,未关联到当前遍历的元素,逻辑完全错误。- 语法与逻辑错误:
max()和min()必须传入可迭代对象(如nums),正确写法是max(nums)、min(nums);原条件判断的结构错误,应该判断当前元素不等于最大值且不等于最小值。 - 循环冗余:
for n in range(100)完全没必要,只需遍历输入数组nums中的元素。 - 返回类型不匹配:函数标注返回
int,但预期输出是列表,需修正为List[int]。
修正后的代码
from typing import List class Solution: def findNonMinOrMax(self, nums: List[int]) -> List[int]: if len(nums) <= 2: return [] # 数组元素不足3个时,不存在符合条件的元素 min_val = min(nums) max_val = max(nums) # 筛选出既非最大值也非最小值的元素 result = [num for num in nums if num != min_val and num != max_val] return result # 测试用例执行 solution = Solution() print(solution.findNonMinOrMax([3, 1, 2, 4])) # 输出: [2, 1]
修正逻辑说明
- 先判断数组长度:若元素少于3个,直接返回空列表(无法同时存在最大、最小及其他元素)。
- 提前计算最值:一次性算出数组的最大值和最小值,避免后续重复计算,提升效率。
- 列表推导式筛选:遍历数组,直接筛选出符合条件的元素,生成结果列表。
内容的提问来源于stack exchange,提问作者Data Scientist Muhammad Saad
相关产品推荐
相关产品推荐

