📜  门| GATE-CS-2005 |第 79 题(1)

📅  最后修改于: 2023-12-03 15:28:42.431000             🧑  作者: Mango

题目介绍:GATE-CS-2005 第79题

题目描述

给定一个整数数组arr和一个整数n,请编写Python函数,将arr中所有出现频率小于等于n的数字删除,并返回剩余的数字数组。

输入格式
  • arr:整数数组
  • n:整数
输出格式

返回一个新的整数数组,仅包含出现频率大于$n$的数字。

输入样例
arr = [1, 2, 3, 2, 3, 4, 5, 2]
n = 2
输出样例
[2, 3, 2, 3, 2]
题目分析

这一题是一个比较简单的题目,我们可以使用collections模块中的Counter函数,首先对数组中的每一个数字进行计数,然后遍历计数结果,将出现次数大于$n$的数字添加到新的数组中,最后返回新数组即可。

代码实现
from collections import Counter

def remove_frequency_less_than_n(arr, n):
    # 计数
    c = Counter(arr)
    res = []
    # 遍历计数结果
    for num, freq in c.items():
        # 如果该数字的出现频率大于n,就添加到结果数组中
        if freq > n:
            res += [num] * freq
    return res
总结

这一题中,我们主要使用了collections模块中的Counter函数,它可以非常方便地对一个数组中的数字进行计数。需要注意的是,本题中的数字出现次数的计算是根据数字本身而不是数字出现的位置,因此在遍历计数结果进行添加时,需要使用[num] * freq来添加多个相同的数字到结果数组中。