码题集 权值计算

       对于一个长度为 n 的数组 a ,我们定义它的权值 wa 。若 a 中存在数 x 满足 x 在整个数组中出现的次数大于等于 x 本身,这样的 x 中最大的一个就是 α 的权值 wa 。若不存在 x ,则该数组的权值为 0 。现在给你一个数组,请你计算它的权值。

代码思路:

  1. 定义sequence列表保存所有输入的数据。
  2. 定义count列表保存每个数字出现的次数,初值为0
  3. 一次遍历sequence列表里的每一个数,假如当前遍历到数字5,则count[5] += 1,表示sequence中数字5的个数多1
  4. 最后从后往前遍历count列表,若count[i] >= i,则i就是这个数组a的权值wa
n = int(input()) 
sequence = list(map(int, input().split())) #输入n个数据并保存在sequence中
count = [0] * (max(sequence)+1) #定义count列表用于保存每个数字在sequence中出现的次数

#遍历sequence中的每个数字,每个数字出现的次数被保存在count列表中
for i in sequence:
    count[i] += 1

#从后往前遍历列表count,最先满足条件的就是所需要的权值wa
bool = False
for i in range(len(count)-1, -1, -1):
    if count[i] >= i:
        bool = True
        print(i)
        break
if not bool:
    print(0)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若风orz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值