对于一个长度为 n 的数组 a ,我们定义它的权值 wa 。若 a 中存在数 x 满足 x 在整个数组中出现的次数大于等于 x 本身,这样的 x 中最大的一个就是 α 的权值 wa 。若不存在 x ,则该数组的权值为 0 。现在给你一个数组,请你计算它的权值。
代码思路:
- 定义sequence列表保存所有输入的数据。
- 定义count列表保存每个数字出现的次数,初值为0。
- 一次遍历sequence列表里的每一个数,假如当前遍历到数字5,则count[5] += 1,表示sequence中数字5的个数多1。
- 最后从后往前遍历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)