📅  最后修改于: 2023-12-03 15:39:41.389000             🧑  作者: Mango
在开发中,我们有时需要检查数组中出现频率高的元素。这篇文章将介绍如何打印所有出现超过N K次的数组元素。
我们可以用两种方式来实现这个功能:
哈希表是一种非常常用的数据结构,也可以用来统计数组中每个元素出现的次数。我们可以遍历数组,将每个元素出现的次数存储在哈希表中。然后再次遍历哈希表,将所有出现频率超过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),但是时间复杂度稍微高一些。选择哪种方法取决于具体的应用场景和对空间和时间的需求。