原题目
思路
注意,本体的中间数定义不同于中位数,以题目给出的定义为准
中位数,有序排列数字中中间的那个数组,
若为奇数,则为第【n/2】+1个数字,
若为偶数,则为第【n/2】个数字和第【n/2】+1个数字的平均数
而此题中,大于一个数的数字必须与小于它的数相同才可以,否则为不存在!
因为存在重复数据的情况,所以不适合用set。
对每个数进行判断,大于它的数和小于它的数都记录个数
最后比较得出结果
注意1:记录时,up 和down 初始都为零,是相等的,要考虑一个数字的情况
注意2:也许满足条件的数字不止一个,也许同为3,一个在前面,一个在后面,这是符合题意的。也可能3,4都满足条件,但是这种情况为不存在中间数。我通过把满足条件的数字加入result列表中,去重后判断个数来判断是否满足题意
num=int(input())
num_list=list(map(int,input().split()))
result=[]
for i in range(num):
up,down=0,0
for o in range(num):
if num_list[i]<num_list[o]:down+=1
elif num_list[i]>num_list[o]:up+=1
if down==up:
result.append(num_list[i])
result=list(set(result))
if len(result)<1 or len(result)>1:print(str("-1"))
else: print(result[0])
备注
做完题就把这个中间数的定义给忘了,数学上中间数中位数是一样的