📌  相关文章
📜  计算所有不同数字都出现在K中的数组元素(1)

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

计算所有不同数字都出现在K中的数组元素

在数组中找出所有不同数字都出现在K中的元素,可以使用哈希表或者直接遍历数组计数的方法进行求解。

哈希表求解

使用哈希表保存每个数字出现的次数,然后再遍历哈希表中的元素,寻找那些所有数字都出现在K次以内的数字。

def find_elements(arr: List[int], k: int) -> List[int]:
    counter = {}
    for num in arr:
        if num in counter:
            counter[num] += 1
        else:
            counter[num] = 1

    result = []
    for num in counter:
        if counter[num] <= k:
            result.append(num)

    return result

时间复杂度为$O(n)$,空间复杂度为$O(n)$,其中$n$为数组的长度。

直接计数求解

使用一个数组来保存每个数字出现的次数,然后再遍历整个数组,统计那些所有数字都出现在K次以内的数字。

def find_elements(arr: List[int], k: int) -> List[int]:
    counter = [0] * 100001
    for num in arr:
        counter[num] += 1

    result = []
    for num in arr:
        if counter[num] <= k:
            result.append(num)

    return result

时间复杂度为$O(n)$,空间复杂度为$O(1)$,其中$n$为数组的长度。

总结

以上两种方法都可以用来求解在数组中寻找那些所有数字都出现在K中的元素,其中哈希表方法的空间复杂度会比较高,但是比较容易理解。而直接计数法则不需要使用额外的空间,但是需要知道数字的取值范围。在实际应用中,可以根据不同的情况来选择不同的方法进行求解。