CCF&Python 2016-12-1 中间数

原题目

CCF&Python 2016-12-1 中间数
CCF&Python 2016-12-1 中间数

思路

注意,本体的中间数定义不同于中位数,以题目给出的定义为准
中位数,有序排列数字中中间的那个数组,
若为奇数,则为第【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])

备注

做完题就把这个中间数的定义给忘了,数学上中间数中位数是一样的

相关文章:

  • 2021-04-14
  • 2021-04-27
  • 2021-11-28
  • 2021-11-18
  • 2021-12-26
  • 2021-11-28
  • 2022-12-23
  • 2021-05-08
猜你喜欢
  • 2021-09-26
  • 2022-12-23
  • 2022-01-07
  • 2021-12-04
  • 2021-10-02
  • 2022-02-10
  • 2021-04-28
相关资源
相似解决方案