📅  最后修改于: 2023-12-03 14:54:28.484000             🧑  作者: Mango
在许多情况下,我们需要找到一个数组中出现频率高的元素。在此,我们将讨论如何打印出现超过 $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]
即元素 1
和 2
均出现了 3 次或以上。