📌  相关文章
📜  打印所有出现超过 N K 次的数组元素(1)

📅  最后修改于: 2023-12-03 14:54:28.484000             🧑  作者: Mango

打印所有出现超过 N K 次的数组元素

在许多情况下,我们需要找到一个数组中出现频率高的元素。在此,我们将讨论如何打印出现超过 $N$ 次的元素。

设 $K$ 为数组长度,$N$ 为出现的最小次数,则可以使用诸如哈希表、计数排序等算法实现。以下是使用哈希表实现的示例代码:

def find_frequent_nums(arr, N):
    freq_dict = {}
    for num in arr:
        if num in freq_dict:
            freq_dict[num] += 1
        else:
            freq_dict[num] = 1
            
    result = []
    for num, freq in freq_dict.items():
        if freq >= N:
            result.append(num)
    
    return result

在上面的代码中,我们首先遍历整个数组并使用哈希表来计算每个元素出现的次数。然后,我们遍历哈希表并将出现次数大于或等于 $N$ 的元素添加到结果列表中。最后,我们返回结果列表。

以下是使用计数排序算法实现的示例代码:

def find_frequent_nums(arr, N):
    count_arr = [0] * (max(arr) + 1)
    for num in arr:
        count_arr[num] += 1
        
    result = []
    for i in range(len(count_arr)):
        if count_arr[i] >= N:
            result.append(i)
    
    return result

在上面的代码中,我们首先创建一个计数数组,并将每个元素的计数增加。然后,我们遍历计数数组并将出现次数大于或等于 $N$ 的元素添加到结果列表中。最后,我们返回结果列表。

无论使用哪种算法,我们现在都可以轻松地打印出现次数大于或等于 $N$ 的元素。以下是打印结果的示例代码:

arr = [1, 2, 3, 4, 3, 2, 1, 1, 2, 2, 2]
N = 3

frequent_nums = find_frequent_nums(arr, N)
print(frequent_nums)

在上面的代码中,我们打印了数组 [1, 2, 3, 4, 3, 2, 1, 1, 2, 2, 2] 中出现次数大于或等于 3 的元素。输出为:

[1, 2]

即元素 12 均出现了 3 次或以上。