📅  最后修改于: 2023-12-03 14:57:30.518000             🧑  作者: Mango
在数组中找出所有不同数字都出现在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中的元素,其中哈希表方法的空间复杂度会比较高,但是比较容易理解。而直接计数法则不需要使用额外的空间,但是需要知道数字的取值范围。在实际应用中,可以根据不同的情况来选择不同的方法进行求解。