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

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

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

在编程中,有时候我们需要找出数组中出现次数超过给定阈值的元素。本文将介绍如何通过编写一个函数来实现这个功能,并打印出满足条件的所有元素。

函数签名

首先,让我们定义函数的签名,以便在后续的讨论中更好地理解。

def print_elements(array: List[int], N: int, K: int) -> None:
    pass

在这个函数签名中,我们有以下几个参数:

  • array:待处理的数组,假设为一个整数类型的列表。
  • N:表示元素出现的阈值,即我们要查找的元素至少要出现多少次。
  • K:表示元素出现的次数,即满足条件的元素必须要超过多少次。

函数将在其内部打印出满足条件的元素。由于我们只关心打印输出结果而不需要返回任何值,因此函数的返回类型指定为None

解决思路

接下来,让我们讨论一下如何解决这个问题。一个直观的解决思路是使用哈希表(字典)来统计每个元素出现的次数,然后遍历哈希表并打印出满足条件的元素。

具体步骤如下:

  1. 使用一个哈希表 count_map 来记录每个元素出现的次数。
  2. 遍历数组 array 中的每个元素:
    • 如果元素已存在于 count_map 中,则将对应的计数加1;
    • 如果元素不存在于 count_map 中,则将其添加到 count_map 中,并将计数初始化为1。
  3. 遍历 count_map 中的每个键值对:
    • 如果某个元素的计数大于 N 且小于等于 K,则打印该元素。
完整代码实现

下面是一个完整的 Python 函数实现,用于打印出现超过 N 次但不超过 K 次的元素:

from typing import List

def print_elements(array: List[int], N: int, K: int) -> None:
    count_map = {}
    
    for num in array:
        if num in count_map:
            count_map[num] += 1
        else:
            count_map[num] = 1
    
    for num, count in count_map.items():
        if N < count <= K:
            print(num)
使用示例

现在我们来演示如何使用上述函数来打印出现超过 N 次但不超过 K 次的元素。

array = [1, 2, 2, 3, 4, 4, 4, 5, 5, 5, 5]
N = 2
K = 4

print_elements(array, N, K)

输出结果应为:

3

因为在数组 array 中,元素 3 出现了 1 次,满足大于 N=2 且小于等于 K=4 的条件。