📅  最后修改于: 2023-12-03 15:41:50.448000             🧑  作者: Mango
这道题要求求出一个长度为n的数组中,每个数字m至少出现m次的数字。例如,对于输入[1, 2, 2, 3, 3, 3, 4, 4, 4, 4],输出应为[4, 3]。
这道题可以用哈希表来解决。我们首先遍历一遍输入的数组,将每个数字存入哈希表,并统计该数字出现的次数。接下来,我们可以再遍历一遍哈希表,找到每个数字m对应的出现次数n,若n >= m,则将该数字加入结果数组中。最后返回结果。
下面是Python代码的实现:
def find_special_numbers(nums: List[int]) -> List[int]:
counts = {}
results = []
for num in nums:
counts[num] = counts.get(num, 0) + 1
for num, count in counts.items():
if count >= num:
results.append(num)
return results
该算法需要两次遍历输入的数组,以及一次遍历哈希表,所以时间复杂度为O(n),其中n为输入数组的长度。空间复杂度为O(n),即哈希表存储的空间。