码题集 权值计算

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

码题集 权值计算_第1张图片

代码思路:

  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)

你可能感兴趣的:(码题集,oj赛题,python,算法,数据结构)