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])

备注

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值