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

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

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

在开发中,我们有时需要检查数组中出现频率高的元素。这篇文章将介绍如何打印所有出现超过N K次的数组元素。

实现方法

我们可以用两种方式来实现这个功能:

  1. 使用哈希表
  2. 使用排序
使用哈希表

哈希表是一种非常常用的数据结构,也可以用来统计数组中每个元素出现的次数。我们可以遍历数组,将每个元素出现的次数存储在哈希表中。然后再次遍历哈希表,将所有出现频率超过N K次的元素打印出来。

以下是使用哈希表的代码实现:

def print_freq_items(arr, n, k):
    freq = {}
    for i in arr:
        if i in freq:
            freq[i] += 1
        else:
            freq[i] = 1

    for i in freq:
        if freq[i] >= k:
            print(i)
使用排序

另一个方法是先对数组进行排序,然后遍历数组找出所有出现频率超过N K次的元素。因为相同的元素都会被排序到一起,所以我们只需要遍历一遍数组即可。

以下是使用排序的代码实现:

def print_freq_items(arr, n, k):
    arr.sort()
    i = 0
    while i < n:
        count = 1
        while i + 1 < n and arr[i] == arr[i + 1]:
            count += 1
            i += 1

        if count >= k:
            print(arr[i])

        i += 1
示例

我们假设有一个数组arr,它包含以下元素:

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

如果我们希望找出所有出现频率超过3次的元素,我们可以使用以下代码:

print_freq_items(arr, len(arr), 3)

输出结果为:

1
2
5

这三个元素都出现了超过3次。

总结

本文介绍了两种方法来打印所有出现超过N K次的数组元素。使用哈希表是一种非常简单和高效的方法,但是需要O(N)的额外空间。使用排序方法空间复杂度为O(1),但是时间复杂度稍微高一些。选择哪种方法取决于具体的应用场景和对空间和时间的需求。